中秋节快乐,学习的快乐相互交加,逐渐对 pytorch有了更深入的理解,熟能生巧,再加上实战,学起来更加开心快乐!继续加油!!!
上一章RNN的升级版本的情感分析,这一小节中,我不使用RNN的方法:实现论文 Bag of Tricks for Efficient Text Classification中的模型,该模型实现了与第二章情感分析相当的性能,但训练速度要快得多。 3.1 数据预处理 FastText分类模型与其他文本分类模型最大的不同之处在于其计算了输入句子的n-gram,并将n-gram作为一种附加特征来获取局部词序特征信息添加至标记化列表的末尾。n-gram的基本思想是,将文本里面的内容按照字节进行大小为n的滑动窗口操作,形成了长度是n的字节片段序列,其中每一个字节片段称为gram。具体而言,在这里我们使用bi-grams。 例如,在句子“how are you ?”中,bi-grams 是:“how are”、“are you”和“"you ?”。 3.2 构建模型 FastText是一种典型的深度学习词向量的表示方法,通过将Embedding层将单词映射到稠密空间,然后将句子中所有单词在Embedding空间中进行平均,进而完成分类。所以这个模型参数量相较于上一章中的模型会减少很多。 具体地,它首先使用’Embedding’层计算每个词嵌入,然后计算所有词嵌入的平均值,并通过’Linear’层将其输入。 使用二维池化函数“avg_pool2d”实现单词在Embedding空间中的平均化。我们可以将词嵌入看作为一个二维网格,其中词沿着一个轴,词嵌入的维度沿着另一个轴。转换为5维词嵌入的示例句子,词沿纵轴,嵌入沿横轴。[4x5] tensor中的每个元素都由一个绿色块表示。 “avg_pool2d”使用大小为“embedded.shape[1]”(即句子长度)乘以1的过滤器。计算filter 覆盖的所有元素的平均值,然后filter 向右滑动,计算句子中每个单词下一列嵌入值的平均值。每个filter位置提供一个值,即所有覆盖元素的平均值。filter 覆盖所有嵌入维度后,会得到一个[1x5] 的张量,然后通过线性层进行预测;
|