PyTorch 提供了两种损失函数的使用方法:函数形式、模块形式,函数形式的损失函数定义在 torch.nn.functional 库中,使用时传入神经网络的预测值和目标值来计算损...
1. pad_sequence pad_sequence 函数通过填充的方式,将同一个 batch 中的 sequences 通过默认填充 0 的方式,变成最长 sequence ...
在 NLP 任务中主要处理带有序列关系的文本数据,这就需要了解循环(递归)神经网络。下图是一个简单的循环神经网络: 网络中包含一个神经元,但是它具有不同的时间步,能够提取出句子的顺...
我们都知道增加网络的宽度和深度可以很好提高网络的性能,深的网络一般都比浅的的网络效果好。比如,一个深的网络 A 和一个浅的网络 B,那 A 的性能至少都能跟 B一样,为什么呢? h...
我们知道网络开始训练之后,每一层网络的参数都会发生变化。又由于每一层网络的输入是上一层网络的输出,上一层网络参数的变化,就导致当前层的输入分布发生变化,这个问题我们称之为 Inte...
在训深层练神经网络时,由于模型参数较多,在数据量不足的情况下,很容易过拟合。Dropout 就是在神经网络中一种缓解过拟合的方法。 我们知道,缓解过拟合的方式就是降低模型的复杂度,...
在解决 NLP 任务之前, 首先就要构建自己的词表。词表的作用就是给定语料,将文本中的以字为单位、或者以词为单位转换为整数序号,该序号可用于在词嵌入的 lookup table 中...
当我们使用 PyTorch 构建神经网络时,经常使用到一些内置的网络层。本篇文章主要介绍下列层的使用: 线性层(Linear) 词嵌入层(Embedding) 循环网络层(RNN、...
我们经常需要预测一个句子,预测时第 2 个词依赖于前 1 个词,预测第 3 个词时依赖于前面的 2 个词,当预测第 n 个词时依赖于前 n-1 个词,我们需要找到一个这样的词的序列...
BP (Back Propagation)算法也叫做误差反向传播算法,它用于求解模型的参数梯度,从而使用梯度下降法来更新网络参数。它的基本工作流程如下: 通过正向传播得到误差,所谓...
在 PyTorch 中,使用 torch.utils.data.DataLoader 类可以实现批量的数据集加载,在我们训练模型中非常常用,其功能也确实比较强度大。由于其参数比较多...
目前业界公认的最好的激活函数是 swish 和 mish 函数,在保持原结构不变的基础上,直接将模型的激活函数换成 HardSwish 或 Mish 函数,都会使得模型的性能有所提...
ReLU(Linear rectification function,修正线性单元)在图像处理任务中使用最广泛的激活函数,它虽然具有一定的优势,但是也存在一些不足,由此出现了一些变...
激活函数主要用来向神经网络中加入非线性因素,以解决线性模型表达能力不足的问题,它对神经网络有着极其重要的作用。我们的网络参数在更新时,使用的反向传播算法(BP),这就要求我们的激活...
激活函数用于对每层的输出数据进行变换, 进而为整个网络结构结构注入了非线性因素。此时, 神经网络具备逼近任意函数的能力。 如果不使用激活函数,整个网络虽然看起来复杂,其本质还相当于...
我们通过手动实现线性回归的假设函数、平方损失、SGD优化方法、以及训练函数来实现对 sklearn make_regression 函数产生的数据集进行拟合,最后通过拟合直线、训练...
自动微分(Autograd)模块对张量做了进一步的封装,具有自动求导功能。自动微分模块是构成神经网络训练的必要模块,在神经网络的反向传播过程中,Autograd 模块基于正向计算的...