前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pytorch自然语言处理之Pooling层的句子分类

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

作者头像
zenRRan
发布2018-04-10 10:53:05
7660
发布2018-04-10 10:53:05
举报

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()。

最后得出结果:

这个贼耗时间

精确度慢慢增长。。。


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

点击阅读原文,获得源代码

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深度学习自然语言处理 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一步搭建网络
  • 第二步读入数据并将数据数字化
  • 第三步开始训练
  • 最后得出结果:
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档