pytorch自然语言处理之Pooling层的句子分类

Pooling作为最简单的层其实也可以作为句子分类任务。Pooling有很多种,max_Pooling,avg_Pooling,min_Pooling等。常用的还是max_Pooling:取同维度的最大值。

先看看流程图:

这里的Linear Layer后面应该经过一个Softmax的,可是由于交叉熵cross_entropy里隐含有Softmax,这里我就没有画了。

第一步搭建网络

这里除了划线的和类的名字外,其他都是pytorch固定模板。__init__就是搭建网络的函数,forward是数据怎么在你刚搭建的网络中流动的写出来就行,注意数据矩阵的维数,要前后对上。该维度可以用view(),t(),transport()按照想法进行改变。我在这个维度上浪费了很长时间,就是对不上。慢慢理解了,就会了。

这里的Embeding层就是把现实客观特征转成电脑识别的特征,也就是特征向量化

第二步读入数据并将数据数字化

数据是这个样子:

前面文本后面类别

读取文本的类

清洗英文文本的函数,这个写过一次后,下次清洗文本直接复制直接用。

文本读取完后,建立词典,为只有数字序列化做准备。函数如下:

字典为:

然后通过函数调用就能生成数字序列:

第三步开始训练

因为用SGD很多时候不能够收敛。。。特别悲催。所以推荐用Adam优化。

 

这是计算精确度的函数,在一遍跑好的模型上走一遍Dev数据,得出开发集准确率。torch和numpy交换就用  .numpy()

最后得出结果:

这个贼耗时间

精确度慢慢增长。。。

在此,非常感谢刘宗林师兄的技术支持。

源码:https://github.com/zenRRan/Stance-Detection


更多精彩内容,请关注 深度学习自然语言处理 公众号,就是下方啦!跟随小博主,每天进步一丢丢!哈哈!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值