背景介绍
本文内容是使用CNN进行文本分类,主要记录文本分类问题中使用tensorflow进行神经网络构建的内容。此篇承接上一篇的NLP-使用tensorflow构建神经网络——嵌入层细节部分说明。
目录
一、CNN模型图
图片来源:论文Convolutional Neural Networks for Sentence Classification
二、卷积和池化代码
# Create a convolution + maxpool layer for each filter size
pooled_outputs = []#初始化空的list
for i, filter_size in enumerate(filter_sizes):#遍历卷积核种类,size=2、size=3、、、
with tf.name_scope("conv-maxpool-%s" % filter_size):
#建立一个名称为’conv-maxpool-‘的模块
# Convolution Layer
filter_shape = [filter_size, embedding_size, 1, num_filters]
#卷积核参数:高*宽*通道*卷积核个数,图片中最左侧所示
W = tf.Variable(tf.truncated_normal(filter_shape, stddev=0.1), name="W")
# W表示截断产生正态分布数据,方差为0.1,变量维度为filter_shape的张量
b = tf.Variable(tf.constant(0.1, shape=[num_filters]), name="b")
# b表示变量维度为卷积核个数,数值为0.1的张量
conv = tf.nn.conv2d(#实现卷积
self.embedded_chars_ex