Transformer 是谷歌在 2017 年的论文 《Attention Is All you Need》中提出的一种新架构,它在多项 NLP 任务上效果很不错,训练速度也比 RNN 更快。目前 Transformer...
PyTorch 提供了两种损失函数的使用方法:函数形式、模块形式,函数形式的损失函数定义在 torch.nn.functional 库中,使用时传入神经网络的预测值和目标值来计算损失,模型形式是通过构建一个模块的实例对象...
1. pad_sequence pad_sequence 函数通过填充的方式,将同一个 batch 中的 sequences 通过默认填充 0 的方式,变成最长 sequence 的长度,如下所示: 上图中,有 3 个句...
在 NLP 任务中主要处理带有序列关系的文本数据,这就需要了解循环(递归)神经网络。下图是一个简单的循环神经网络: 网络中包含一个神经元,但是它具有不同的时间步,能够提取出句子的顺序信息,将其展开如下图所示: h 表示 ...
我们都知道增加网络的宽度和深度可以很好提高网络的性能,深的网络一般都比浅的的网络效果好。比如,一个深的网络 A 和一个浅的网络 B,那 A 的性能至少都能跟 B一样,为什么呢? https://arxiv.org/abs...
我们知道网络开始训练之后,每一层网络的参数都会发生变化。又由于每一层网络的输入是上一层网络的输出,上一层网络参数的变化,就导致当前层的输入分布发生变化,这个问题我们称之为 Internal Convariate Shif...
在训深层练神经网络时,由于模型参数较多,在数据量不足的情况下,很容易过拟合。Dropout 就是在神经网络中一种缓解过拟合的方法。 我们知道,缓解过拟合的方式就是降低模型的复杂度,而 Dropout 就是通过减少神经元之...
在解决 NLP 任务之前, 首先就要构建自己的词表。词表的作用就是给定语料,将文本中的以字为单位、或者以词为单位转换为整数序号,该序号可用于在词嵌入的 lookup table 中搜索词向量。 接下来,我们介绍下词表的构...
当我们使用 PyTorch 构建神经网络时,经常使用到一些内置的网络层。本篇文章主要介绍下列层的使用: 线性层(Linear) 词嵌入层(Embedding) 循环网络层(RNN、GRU、LSTM) 1. 线性层 in_...
我们经常需要预测一个句子,预测时第 2 个词依赖于前 1 个词,预测第 3 个词时依赖于前面的 2 个词,当预测第 n 个词时依赖于前 n-1 个词,我们需要找到一个这样的词的序列,使得概率值最大,或者至少能够被人接受。...
BP (Back Propagation)算法也叫做误差反向传播算法,它用于求解模型的参数梯度,从而使用梯度下降法来更新网络参数。它的基本工作流程如下: 通过正向传播得到误差,所谓正向传播指的是数据从输入到输出层,经过层...
在 PyTorch 中,使用 torch.utils.data.DataLoader 类可以实现批量的数据集加载,在我们训练模型中非常常用,其功能也确实比较强度大。由于其参数比较多,我们将会对其用法进行详解。 DataL...