pytorch自然语言处理之Pooling层的句子分类
2017-12-29 本文已影响48人
zenRRan
概括
Pooling作为最简单的层可以作为句子分类任务。
![](https://img.haomeiwen.com/i2666154/b8be405317cc989f.png)
第一步搭建网络
![](https://img.haomeiwen.com/i2666154/0c4557da0a5daacd.png)
这里除了划线的和类的名字外,其他都是pytorch固定模板。__init__就是搭建网络的函数,forward是数据怎么在你刚搭建的网络中流动的写出来就行,注意数据矩阵的维数,要前后对上。该维度可以用view(),t(),transport()。
这里的Embeding层就是把现实客观特征转成电脑识别的特征,也就是特征向量化。
第二步读入数据并将数据数字化
数据是这个样子:
![](https://img.haomeiwen.com/i2666154/6f3539354e17ab70.png)
前面文本后面类别
![](https://img.haomeiwen.com/i2666154/f6bb11e9c1909082.png)
读取文本的类
![](https://img.haomeiwen.com/i2666154/6ba676d19e76a104.png)
清洗英文文本的函数,这个写过一次后,下次清洗文本直接复制直接用。
文本读取完后,建立词典,为只有数字序列化做准备。函数如下:
![](https://img.haomeiwen.com/i2666154/8aba0c5ba9260396.png)
字典为:
![](https://img.haomeiwen.com/i2666154/394307aad9afb5b8.png)
然后通过函数调用就能生成数字序列:
![](https://img.haomeiwen.com/i2666154/411782d37c52e844.png)
第三步开始训练
![](https://img.haomeiwen.com/i2666154/448f8c5407615528.png)
因为用SGD很多时候不能够收敛。。。特别悲催
![](https://img.haomeiwen.com/i2666154/515342174b72e120.png)
![](https://img.haomeiwen.com/i2666154/eaeadceeef689e5c.png)
这是计算精确度的函数,在一遍跑好的模型上走一遍Dev数据,得出开发集准确率。torch和numpy交换就用 .numpy()。
最后得出结果:
这个贼耗时间
![](https://img.haomeiwen.com/i2666154/34215f29ff1790a3.png)
![](https://img.haomeiwen.com/i2666154/860d0b172cf4ff2e.png)
![](https://img.haomeiwen.com/i2666154/6ecf5883df64770c.png)
精确度慢慢增长。。。
之后还会再添加CNN,RNN,LSTM,GAN神经网络。可以添加我的微信公众号,实时会有自然语言处理理论与实践。关注可以获得语料和源代码呦!
![](https://img.haomeiwen.com/i2666154/d96f3781e839ecd3.png)