vector 容器叫做动态数组,其大小可以随着元素的增长而变化,创建得时候不需要指定大小。vector 容器和 array 容器一样使用一块连续的内存空间来存储。 动态增长原理:1...
array 是一个数组,对 C-style 的数组的封装(int arr[] = {10, 20, 30}) 为什么C++要对 C 风格的数组进行封装?而不是直接使用C风格数组?a...
什么是链表?链表是由一些列节点组成的,每一个阶段包含数据域、指针域,每个节点的内存都是独立,使用的是非连续的内存。 链表分为:单向链表、双向链表、循环链表单向链表的开销最低,空间只...
STL 中的迭代器有以下几种:输入迭代器、输出迭代器、正向迭代器、双向迭代器、随机访问迭代器。1. 输入迭代器:一次只能读取一个元素,只能向前移动,支持:++、==、!=、(只读)...
函数对象适配器主要用于对函数、函数对象进行适配(转换),使得原本不符合接口需求的函数、函数对象变得符合要求。比如:我们有一个 2 个参数的函数对象,但是我们需要 1 个参数的函数对...
Heap 数据结构一般都被看做是一棵完全二叉树对象,我们知道对于完全二叉树可以使用连续的数组空间来存储各个结点关系。 Heap 是一种非常重要的数据结构,使用 Heap 可以实现高...
目前业界公认的最好的激活函数是 swish 和 mish 函数,在保持原结构不变的基础上,直接将模型的激活函数换成 HardSwish 或 Mish 函数,都会使得模型的性能有所提...
ReLU(Linear rectification function,修正线性单元)在图像处理任务中使用最广泛的激活函数,它虽然具有一定的优势,但是也存在一些不足,由此出现了一些变...
激活函数主要用来向神经网络中加入非线性因素,以解决线性模型表达能力不足的问题,它对神经网络有着极其重要的作用。我们的网络参数在更新时,使用的反向传播算法(BP),这就要求我们的激活...
激活函数用于对每层的输出数据进行变换, 进而为整个网络结构结构注入了非线性因素。此时, 神经网络具备逼近任意函数的能力。 如果不使用激活函数,整个网络虽然看起来复杂,其本质还相当于...
我们通过手动实现线性回归的假设函数、平方损失、SGD优化方法、以及训练函数来实现对 sklearn make_regression 函数产生的数据集进行拟合,最后通过拟合直线、训练...
自动微分(Autograd)模块对张量做了进一步的封装,具有自动求导功能。自动微分模块是构成神经网络训练的必要模块,在神经网络的反向传播过程中,Autograd 模块基于正向计算的...
PyTorch 为每个张量封装很多实用的计算函数,例如计算均值、平方根、求和等等。 mean 函数用于计算张量均值 sum 函数用于计算张量和 pow 函数用于计算张量平方 sqr...
PyTorch 是一个 Python 包,用于将数据封装成张量(Tensor)来进行运算。PyTorch 中的张量就是元素为同一种数据类型的多维矩阵。 基本创建方式 创建线性和随机...
在很多领域需要进行向量相似度的计算。本篇文章主要介绍一些常见的方法: 曼哈顿距离 欧几里得距离 切比雪夫距离 闵可夫斯基距离 标准欧式距离 余弦相似度 点积相似度 1. 曼哈顿距离...
编写词典构建代码 编写数据加载器代码 编写模型定义代码 编写训练代码 编写测试代码 1. 编写词典构建代码 在开始训练词向量之前,需要先根据语料库构建出自己的词典,方便将文本语料内...