CNN之文本分类之网络结构

本文主要是基于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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏贾志刚-OpenCV学堂

使用OpenCV与sklearn实现基于词袋模型(Bag of Word)的图像分类预测与搜索

基于OpenCV实现SIFT特征提取与BOW(Bag of Word)生成向量数据,然后使用sklearn的线性SVM分类器训练模型,实现图像分类预测。实现基于...

5353
来自专栏CVer

风格迁移三部曲(一)之普通风格迁移

风格迁移(Style Transfer)是一个很有意思的任务,通过风格迁移可以使一张图片保持本身内容大致不变的情况下呈现出另外一张图片的风格。风格迁移三步曲将绍...

1670
来自专栏杨熹的专栏

详解 LSTM

今天的内容有: LSTM 思路 LSTM 的前向计算 LSTM 的反向传播 关于调参 ---- LSTM 长短时记忆网络(Long Short Term Mem...

5125
来自专栏Ldpe2G的个人博客

Mxnet 实现图片快速风格化

2023
来自专栏深度学习那些事儿

利用pytorch实现神经网络风格迁移Neural Transfer

载入图像输入大小无要求,最终会被剪裁到相同大小,这是因为神经网络设计了一个特定的输入大小,因此内容图像和风格图像必须大小一致。

4262
来自专栏贾志刚-OpenCV学堂

TensorFlow进行简单的图像处理

TensorFlow进行简单的图像处理 简单概述 作为计算机视觉开发者,使用TensorFlow进行简单的图像处理是基本技能,而TensorFlow在tf.im...

6288
来自专栏瓜大三哥

竞争型神经网络续1

1.竞争神经网络函数 1.1创建函数 1.1.1 newc函数 newc函数用于创建一个竞争层,这是一个旧版本的函数,现在用competlayer函数代替。函数...

41110
来自专栏深度学习那些事儿

利用pytorch实现神经网络风格迁移Neural Transfer

载入图像输入大小无要求,最终会被剪裁到相同大小,这是因为神经网络设计了一个特定的输入大小,因此内容图像和风格图像必须大小一致。

3547
来自专栏人工智能

深入机器学习系列12-高斯混合模型

高斯混合模型   现有的高斯模型有单高斯模型()和高斯混合模型()两种。从几何上讲,单高斯分布模型在二维空间上近似于椭圆,在三维空间上近似于椭球。在很多情况下,...

2499
来自专栏机器学习算法工程师

干货|(DL~2)一看就懂的卷积神经网络

文章来自:https://leonardoaraujosantos.gitbooks.io 作者:Leonardo Araujo dos Santos

1121

扫码关注云+社区

领取腾讯云代金券