ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Datawhale九月组队学习--情感分析--Task03

2021-09-22 14:31:45  阅读:223  来源: 互联网

标签:模型 -- BN Dropout Datawhale train eval Task03 model


Datawhale九月组队学习:情感分析

往期指路:

   Task01情感分析BaseLine

   Task02情感分析Upgrade


文章目录


前言

  在这一小节中,我们将学习一种不使用RNN的方法:我们将实现论文 Bag of Tricks for Efficient Text Classification 中的模型,这个简单的模型实现了与第二章情感分析相当的性能,但训练速度要快得多。


笔记要点:

1. 模型搭建流程:

  1、数据预处理
  2、构建模型
  3、训练模型
  4、模型验证

2. 数据预处理要点记录:

  与Task2不同,FastText分类模型与其他文本分类模型最大的不同之处在于其计算了输入句子的n-gram,并将n-gram作为一种附加特征来获取局部词序特征信息添加至标记化列表的末尾。n-gram的基本思想是,将文本里面的内容按照字节进行大小为n的滑动窗口操作,形成了长度是n的字节片段序列,其中每一个字节片段称为gram。具体而言,在这里我们使用bi-grams。

  因此构建了【generate_bigrams函数】获取一个已经标注的句子,计算bigrams并将其附加到标记化列表的末尾。

注意:关于n-gram的理解点这里

3. 模型搭建要点记录:

  FastText是一种典型的深度学习词向量的表示方法,通过将Embedding层将单词映射到稠密空间,然后将句子中所有单词在Embedding空间中进行平均,进而完成分类。所以这个模型参数量相较于上一章中的模型会减少很多。

 pooled = F.avg_pool2d(embedded, (embedded.shape[1], 1)).squeeze(1) 

关于squeeze()和unsqueeze()的理解如下:

  1. squeeze()函数:对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的数去掉第一个维数为一的维度之后就变成(3)行

  2. unsqueeze()函数:函数主要是对数据维度进行扩充。给指定位置加上维数为一的维度,比如原本有个三行的数据(3),在0的位置加了一维就变成一行三列(1,3)。

4. 模型训练要点记录:

model.train()和model.eval()用法和区别:参考链接点这里

   1、model.train()和model.eval()的区别主要在于Batch Normalization和Dropout两层。

   2、如果模型中有BN层(Batch Normalization)和 Dropout,需要在训练时添加model.train()。model.train()是保证BN层能够用到每一批数据的均值和方差。对于Dropout,model.train()是随机取一部分网络连接来训练更新参数。

   3、如果模型中有BN层(Batch Normalization)和Dropout,在测试时添加model.eval()。model.eval()是保证BN层能够用全部训练数据的均值和方差,即测试过程中要保证BN层的均值和方差不变。对于Dropout,model.eval()是利用到了所有网络连接,即不进行随机舍弃神经元。训练完train样本后,生成的模型model要用来测试样本。在model(test)之前,需要加上model.eval(),否则的话,有输入数据,即使不训练,它也会改变权值。这是model中含有BN层和Dropout所带来的的性质。


总结

   以上就是Task03的全部内容了,接下来的学习继续坚持呀~。

标签:模型,--,BN,Dropout,Datawhale,train,eval,Task03,model
来源: https://blog.csdn.net/weixin_44186785/article/details/120413390

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有