相关文章推荐
谈吐大方的茶叶  ·  Error: Cannot find ...·  1 年前    · 
霸气的西装  ·  MongoDb,如何根据某个_id值删除数据 ...·  2 年前    · 
捣蛋的长颈鹿  ·  java ...·  2 年前    · 
呐喊的打火机  ·  unicode:characters_to_ ...·  2 年前    · 
刚失恋的香蕉  ·  油甲桂攝影工作室,自助婚紗,婚禮紀錄,海外婚 ...·  2 年前    · 
Code  ›  CNN之文本分类之网络结构开发者社区
网络结构 文本分类 机器学习 卷积
https://cloud.tencent.com/developer/article/1029026
腹黑的日光灯
2 年前
作者头像
企鹅号小编
0 篇文章

CNN之文本分类之网络结构

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 编程 > CNN之文本分类之网络结构

CNN之文本分类之网络结构

作者头像
企鹅号小编
发布 于 2018-01-25 14:42:44
780 0
发布 于 2018-01-25 14:42:44
举报

本文主要是基于Yoon Kim的Convolutional Neural Networks for Sentence Classification,用中文重新梳理一遍。

模型

这篇文章使用的模型如下图所示。

第一层网络是词嵌入层,用来将文本转换成低维度的向量;第二层是卷积层,使用多个卷积核;第三层是max-pool最大池化层,产出一个长的feature向量,添加dropout;最后是softmax层,进行分类。

网络构建-源码解读

init函数

参数解读为:

sequence_length – 句子的长度,可以取所有句子的最长长度,其余不足长度的打pad。

num_classes – 分类类别数量

vocab_size – 词典的大小,embedding层的向量维度为 [vocabulary_size, embedding_size].

embedding_size – 每个词的维度

filter_sizes – 卷积核的尺寸,如[3,4,5], 如大小为3的卷积核的维度为3*embedding_size,对于每个卷积核,可以有num_filters个

num_filters – 每个size的卷积核的数量

定义输入占位符

首先定义输入数据

tf.placeholder:创建一个占位符,这样我们在训练网络或者测试的时候可以给网络喂数据。[None, sequence_length]是输入的数据维度,None表示输入的数据量不确定,可以为任意值。一般为一批数据的大小。

dropout_keep_prob为dropout层选择一个神经元的概率。在使用网络预测时,禁掉这个参数,直接赋值为1.

词嵌入层

网络定义的第一层为词嵌入层,用来将词映射成低纬度的向量标示。

tf.device("/cpu:0") :操作在CPU上。一般情况下,tensorflow会尝试在GPU上执行计算,如果GPU有的话。但是目前词嵌入还没有GPU支持的版本,如果设定为GPU会报错。

tf.name_scope :创建一个叫“embedding”的命名空间,他下面的所有操作都在这个命名空间下,在tensorBoar读网络时能更有层次感。

卷积层

现在开始构建卷积层+最大池化层。这里使用不同尺寸的卷积核。最终将不同尺度的feature merge成一个大的向量。

W是卷积核的矩阵,h是经过非线性校正之后的卷积计算结果。 VALID padding意思是我们使用窄卷积,不对边界padding,产出 [1, sequence_length - filter_size + 1, 1, 1]. 最大池化的时候使用一个特定的核可以只产出一维特征,最终产出[batch_size, 1, 1, num_filters],最终将所有卷积的结果组合成一个大的向量,[batch_size, num_filters_total],tf.reshape=-1,进行尺度方向扭转。

Dropout层

Dropout层在一定的概率下随机的选择某些神经元“失活”,但是权重参数等保存。一般训练时设为0.5,预测时设为1.

Scores and Predictions

使用dropout之后,max-pool计算完的特征,我们可以通过矩阵计算并选择最大值产出预测结果。同时,我们可以使用softmax将原始结果进行归一化,但是这并不会改变最终的预测。

Loss and Accuracy

使用已经计算的score可以得到损失值。loss是对网络损失的衡量,我们的目标是最小化它。在分类中常用交叉损失。

对于准确率,我们也定义以个表达式,它是跟踪训练和测试的有效衡量标准。

可视化

下图是整个网的络结构。

这里,我们介绍了网络结构及每层结构的输入输出以及执行的计算,下一篇文章我们会介绍训练过程。

Implementing a CNN for Text Classification in TensorFlow

Convolutional Neural Networks for Sentence Classification

本文来自企鹅号 - 全球大搜罗 媒体

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

大数据
人工智能
深度学习
神经网络

本文来自企鹅号 - 全球大搜罗 媒体

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

大数据
人工智能
深度学习
神经网络
评论
登录 后参与评论
0 条评论
热度
最新
登录 后参与评论
关于作者
企鹅号小编
腾讯
0
文章
0
累计阅读量
0
获赞
前往专栏
领券
  • 社区

    • 专栏文章
    • 阅读清单
    • 互动问答
    • 技术沙龙
    • 技术视频
    • 团队主页
    • 腾讯云TI平台
  • 活动

    • 自媒体分享计划
    • 邀请作者入驻
    • 自荐上首页
    • 技术竞赛
  • 资源

    • 技术周刊
    • 社区标签
    • 开发者手册
    • 开发者实验室
  • 关于

    • 社区规范
    • 免责声明
    • 联系我们
    • 友情链接

腾讯云开发者

扫码关注腾讯云开发者

扫码关注腾讯云开发者

领取腾讯云代金券

热门产品

  • 域名注册
  • 云服务器
  • 区块链服务
  • 消息队列
  • 网络加速
  • 云数据库
  • 域名解析
  • 云存储
  • 视频直播

热门推荐

  • 人脸识别
  • 腾讯会议
  • 企业云
  • CDN加速
  • 视频通话
  • 图像分析
  • MySQL 数据库
  • SSL 证书
  • 语音识别

更多推荐

  • 数据安全
  • 负载均衡
  • 短信
  • 文字识别
  • 云点播
  • 商标注册
  • 小程序开发
  • 网站监控
  • 数据迁移

Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有

深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569

腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287

问题归档 专栏文章 快讯文章归档 关键词归档 开发者手册归档 开发者手册 Section 归档

Copyright © 2013 - 2023 Tencent Cloud.

All Rights Reserved. 腾讯云 版权所有

登录 后参与评论
 
推荐文章
谈吐大方的茶叶  ·  Error: Cannot find module 'bson' - help - Meteor Forum
1 年前
霸气的西装  ·  MongoDb,如何根据某个_id值删除数据 - 叶子0321~ - 博客园
2 年前
捣蛋的长颈鹿  ·  java swing日期控件_mob64ca12d06991的技术博客_51CTO博客
2 年前
呐喊的打火机  ·  unicode:characters_to_binary/1 - 把一个字符集数据转换为一个 UTF-8 的二进制数据 - Erlang/OTP 中文手册(Erldoc.com)
2 年前
刚失恋的香蕉  ·  油甲桂攝影工作室,自助婚紗,婚禮紀錄,海外婚紗,孕婦寫真,台南婚攝,台南婚紗,高雄婚攝,韓系婚紗,義大利海外婚紗,北海道海外婚紗
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号