python cnn代码详解图解_TextCNN 代码详解(附测试数据集以及GitHub 地址)

前言:本篇是TextCNN系列的第二篇,分享TextCNN的代码

前两篇可见:

一、textCNN整体框架

1. 模型架构

5d4656d8f450f3523087e3e807bd32e8.png

图一:textCNN 模型结构示意

2. 代码架构

a5f3bea7bcdbf57b2d699b53c0c51b66.png图二: 代码架构说明

text_cnn.py 定义了textCNN 模型网络结构

model.py 定义了训练代码

data.py 定义了数据预处理操作

data_set 存放了测试数据集合. polarity.neg 是负面情感文本, polarity.pos 是正面情感文本

train-eval.sh 执行脚本

3.代码地址

部分代码参考了 此处代码

4.训练效果说明:

c13fe3d4969639ae1d6bac3db6dda7ff.png

图三:训练效果展示

二、textCNN model 代码介绍

2.1 wordEmbedding

92d69ba46e64c65e250ee6230e68380b.png

图四:WordEmbedding 例子说明

简要说明:

vocab_size:  词典大小18758

embedding_dim: 词向量大小 为128

seq_length: 句子长度,设定最长为56

embedding_look: 查表操作 根据每个词的位置id 去初始化的w中寻找对应id的向量. 得到一个tensor :[batch_size, seq_length, embedding_size] 既 [?, 56, 128], 此处? 表示batch, 即不知道会有多少输入。

#embedding layer

with tf.name_scope("embedding"):

self.W= tf.Variable(tf.random_uniform([self._config.vocab_size, self._config.embedding_dim], -1.0, 1.0),

name="W")

self.char_emb=tf.nn.embedding_lookup(self.W, self.input_x)

self.char_emb_expanded= tf.expand_dims(self.char_emb, -1)

tf.logging.info("Shape of embedding_chars:{}".format(str(self.char_emb_expanded.shape)))

举例说明:我们有一个词典大小为3的词典,一共对应三个词 “今天”,“天气” “很好“,w =[[0,0,0,1],[0,0,1,0],[0,1,0,0]]。

我们有两个句子,”今天天气“,经过预处理后输入是[0,1]. 经过embedding_lookup 后,根据0 去查找 w 中第一个位置的向量[0,0,0,1], 根据1去查找 w 中第二个位置的向量[0,0,1,0] 得到我们的char_emb [[0,0,0,1],[0,0,1,0]]

同理,“天气很好”,预处理后是[1,2]. 经过经过embedding_lookup 后,  得到 char_emb 为[[0,0,1,0],[0,1,0,0]]

因为, 卷积神经网conv2d是需要接受四维向量的,故将char_embdding 增广一维,从 [?, 56, 128] 增广到[?, 56, 128, 1]

2.2 Convolution 卷积 + Max-Pooling

3b0f09fbb4528c2a1c0ac913269bbaaf.png图五:卷积例子说明

简要说明:

filter_size= 3,4,5. 每个filter 的宽度与词向量等宽,这样只能进行一维滑动。

每一种filter卷积

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值