1、初始TextCNN

CNN可参考之前的文章:https://www.zhihu.com/people/xianyang94

最近在做寿命预测问题的研究中,拿到的数据为一维的数据,传统的数据预处理方法主要有PCA、LDA、LLE等,考虑到应用CNN进行特征的提取,从而提高预测的精度。但之前了解到的CNN多应用于图像处理,其输入数据为二维或者多维的数据,因此进一步了解学习应用于文本分类的TextCNN。下一篇文章会通过期刊论文来介绍几篇CNN的具体应用实例,主要介绍模型的网络结构。

TextCNN模型是Yoon Kim在2014年 《Convolutional Neural Networks for Sentence Classification》中提出的,利用卷积神经网络(CNN)来对处理文本分类问题(NLP)。该算法利用多个不同大小的kernel来提取句子中的关键信息,从而能更加高效的提取重要特征,实现较好的分类效果。

2、TextCNN结构

该模型的结构如下图:(下图引用于原文)

TextCNN的详细过程见下:(以一句话为例)

(1)输入:自然语言输入为一句话,例如【wait for the video and don't rent it】。

(2)数据预处理:首先将一句话拆分为多个词,例如将该句话分为9个词语,分别为【wait, for, the, video, and, do, n't rent, it】,接着将词语转换为数字,代表该词在词典中的词索引。

(3)嵌入层: 通过word2vec或者GLOV 等embedding 方式将每个词成映射到一个低维空间中,本质上是特征提取器,在指定维度中编码语义特征。例如用长度为6的一维向量来表示每个词语(即词向量的维度为6),wait可以表示为[1,0,0,0,0,0,0],以此类推,这句话就可以用9*6的二维向量表示。

(4)卷积层:与图像处理的卷积核不同的是,经过词向量表达的文本为一维数据,因此在TextCNN卷积用的是一维卷积。TextCNN卷积核的宽度和词向量的维度一致,高度可以自行设置。以将卷积核的大小设置为[2,3]为例,由于设置了2个卷积核,所以将会得到两个向量,得到的向量大小分别为T1:8*1和T2:7*1,向量大小计算过程分别为(9-2-1)=8,(9-3-1)=7,即(词的长度-卷积核大小-1)。

(5)池化层:通过不同高度的卷积核卷积之后,输出的向量维度不同,采用1-Max-pooling将每个特征向量池化成一个值,即抽取每个特征向量的最大值表示该特征。池化完成后还需要将每个值拼接起来,得到池化层最终的特征向量,因此该句话的池化结果就为2*1。

(6)平坦层和全连接层:与CNN模型一样,先对输出池化层输出进行平坦化,再输入全连接层。为了防止过拟合,在输出层之前加上dropout防止过拟合,输出结果就为预测的文本种类。

3、模型实现

(1)数据预处理:TextCNN进行文本分类,原始数据为语句和对应的标签,数据预处理的流程为先将各句子进行分词,接着将每个词转换为正整数用来代表词的编号,最后利用多删少补的原则将每句话设置为等长的词语,得到测试集和训练集的数据。

import 

(2)网络结构的搭建:TextCNN网络结构主要有嵌入层-卷积层-池化层-dropout-全连接层,将网络的基础操作(损失函数、模型训练、准确率的定义)和网络结构的搭建结合到一个函数中,该部分代码参考:https://github.com/Asia-Lee。

# 构建TextCNN模型

(3)主函数:查看测试精度

if 

4、模型总结

  • TextCNN处理NLP,输入为一整句话,所以卷积核的宽度与词向量的维度一致,这样用卷积核进行卷积时,不仅考虑了词义而且考虑了词序及其上下文。
  • TextCNN的结构优化有两个方向,一个是词向量的构造,另一个是网络参数和超参数调优。
  • TextCNN和CNN的最大不同在于输入数据的维度,图像是二维数据, 图像的卷积核是从左到右, 从上到下进行滑动来进行特征抽取;自然语言是一维数据, 虽然经过word-embedding 生成了二维向量,但是对词向量做从左到右滑动来进行卷积没有意义。

参考文献:《Convolutional Neural Networks for Sentence Classification》、Keras中文文档、代码参考:

https://github.com/Asia-Lee​github.com嵌入层 Embedding - Keras 中文文档​keras.ioConvolutional Neural Networks for Sentence Classification​arxiv.org

keras embedding层_初识TextCNN及keras实现相关推荐

  1. Keras embedding层的理解与使用

    看了很多博客没有解释清楚Embedding层input_dim的意思,下面这篇博客我认为是解释清楚了,欢迎借鉴:  首先搞懂这里embedding的原理就是one-hot,那这样就能理解为什么inpu ...

  2. 神经网络 Embedding层理解; Embedding层中使用预训练词向量

    1.Embedding层理解 高维稀疏特征向量到低维稠密特征向量的转换:嵌入层将正整数(下标)转换为具有固定大小的向量:把一个one hot向量变为一个稠密向量 参考:https://zhuanlan ...

  3. 在Keras的Embedding层中使用预训练的word2vec词向量

    文章目录 1 准备工作 1.1 什么是词向量? 1.2 获取词向量 2 转化词向量为keras所需格式 2.1 获取所有词语word和词向量 2.2 构造"词语-词向量"字典 2. ...

  4. keras.layers.Embedding层介绍

    本层应用,就是把稀疏矩阵变成一个密集矩阵,也称为查表,因为他们之间是一个一一映射关系.与其对应的是one-hot编码,multi-hot编码,对于特征维度过大的应用,直接使用会造成维度灾难. Embe ...

  5. Keras“冻结”层

    "冻结"层指的是该层不参加网络训练,即该层的参数不会更新."冻结"层主要有以下两个应用场景: 1)使用预训练模型进行fine-tune时,我们需要在预训练模型后 ...

  6. keras神经网络回归预测_如何使用Keras建立您的第一个神经网络来预测房价

    keras神经网络回归预测 by Joseph Lee Wei En 通过李维恩 一步一步的完整的初学者指南,可使用像Deep Learning专业版这样的几行代码来构建您的第一个神经网络! (A s ...

  7. java调用keras theano模型_使用Keras / Theano和LSTM进行多标签文本分类

    尝试使用Keras / Theano运行LSTM多标签文本分类 . 我有一个文本/标签csv . 文本是纯文本,标签是数字,总共9个,从1到9 . 我想我没有为这个问题正确配置模型 . 我的代码到目前 ...

  8. loss 加权_【转载】keras 自定义 loss损失函数, sample在loss上的加权 和 metric

    首先辨析一下概念: 1. loss是整体网络进行优化的目标, 是需要参与到优化运算,更新权值W的过程的 2. metric只是作为评价网络表现的一种"指标", 比如accuracy ...

  9. keras 自定义层 2

    本质就是矩阵相乘 Amn *Bnp 这里会提取输入矩阵最后一层的dim 比如说是Amn的n import keras import tensorflow as tf class Linear(kera ...

最新文章

  1. 数据库基准测试:database bencnmark --生成大量随机测试数据
  2. Linux 受到开发者偏爱的 9 个理由!
  3. Bzoj3730 震波
  4. MYSQL数据文件--.frm文件(只有.frm文件时的表结构恢复)
  5. Java面试题!centos安装yum
  6. ASP.NET MVC 2.0 AsyncController(转)
  7. oracle库存会计期无法打开,打开调整会计期出错!(有图)
  8. Python中的两种路径
  9. java listen_java web-- listen
  10. 怎么学习大数据,入门大数据要掌握哪些知识?
  11. 旧版sai笔刷_最详细的SAI笔刷设置教程,非常全面详细!
  12. 游戏策划入门(2)——如何写一份项目建议书?
  13. 物联网第一步: Nginx服务器
  14. 计算机色温调整,如何调节计算机屏幕的色温
  15. c++ std::exception,std::logic_error 异常的使用方法
  16. ubuntu关机命令合集
  17. IC芯片制造过程简介
  18. IP网络技术实验(一)直通网线和交叉网线的制作
  19. C++ 之函数调用操作符和函数对象
  20. 深圳TikTok电商/网红出海

热门文章

  1. 途牛 “特产频道”上线 深化目的地服务网络
  2. Eclipse 构建Maven项目--普通web项目 复制另外一个项目的配置文件导致的问题
  3. 通过jQuery获取窗口的高度
  4. 【转】自底向上和自顶向下的区别
  5. window10 安装出现the error code is 2503错误的解决方法
  6. System Center 2012 R2实例3—SCOM之SharePoint全方位监视11—服务监视
  7. sass之mixin的全局引入(vue3.0)
  8. Docke--利用 commit 理解构建镜像
  9. 学习进度条__软件工程概论第一周学习计划
  10. BZOJ 2956 模积和