TextCNN:用于文本分类的CNN网络

news2024/11/24 16:36:06

参考资料:文本分类之TextCNN与DPCNN

TextCNN 是在2014年的论文 《Convolutional Neural Networks for Sentence Classification》中提出来的。

以下是TextCNN的网络结构:

在这里插入图片描述

(1)TextCNN的第一层为 Embedding 层

Embedding 层的输入维度为 [n,k,2]:
其中n表示句子长度,k 为 word embedding (vector)的维度,2表示通道数。
即 embedding 采用的是 word2vec 的方式,代码中 k = 128
为了方便批处理,通常对长度不等的句子进行 padding 操作。

获得单词嵌入向量的方式目前可以分为:预训练和“新训练”。预训练的词嵌入可以利用其它语料库的单词分布得到更多的先验知识,而通过当前网络训练的词嵌入可以更好地捕获与当前任务相关的单词分布特征。

Embedding 层采用了双通道(static与non-static)的形式:

static 表示预训练的 word embedding ,在训练过程中不被改变;
non-static 表示“参与网络训练”的 word embedding ,其作为参数在训练过程中发生改变。

(2)TextCNN的第二层为卷积层 Conv1d

与CV领域不同的是,NLP中的卷积核只在一个方向上进行滑动,因此使用 Conv1d
一般情况下,Conv1d用于文本,Conv2d用于图像,Conv3d用于视频。

应用于CV中的卷积核,为了捕获长和宽两个维度的局部特征,卷积核通常在长宽两个方向上进行卷积操作。

而在句子中,一个单词是一个特征,也就是说,句子只具有长度一个维度。因此NLP中的卷积核的宽度与 word embedding 维度 k 相同,且卷积核只会在句子长度这一个方向上进行卷积操作。

Conv1d 层的输入维度为 [n,k,2],图中示例使用了 4 个大小为 m*k 的卷积核(实际为64个);
则输入的维度为 [n-m+1,1,4],即 4(n-m+1)*1 的向量。

(3)TextCNN的第三层为最大池化层 MaxPool1d

与卷积层类似,NLP中的池化层也只在一个方向上进行 Pooling 操作。

MaxPool1d 层的输入是 4(n-m+1)*1 的向量,的向量,输出 4 个标量。 
即 MaxPool1d 会将一个向量转为标量。

(4)TextCNN的第四层为 softmax 输出层

由于卷积核尺寸通常不会很大,因此TextCNN在捕获长距离的文本特征时效果不理想,其在中短文本场景中具有较好的效果。在2017年提出的 DPCNN 能够有效捕获长距离的文本特征。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/599671.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++的右值引用和移动语义

1.左值和右值 在C中,每个表达式或者是左值,或者是右值。 左值(lvalue):可以出现在赋值表达式左侧的值,例如变量名a、数据成员a.m、解引用表达式*p等。左值可以被赋值和取地址。右值(rvalue):只能出现在赋值表达式右侧…

十七、多线程(下)

文章目录 一、线程互斥,它是对的,但是不合理(饥饿问题)——同步二、条件变量(一)概念(二)条件变量接口1. pthread_cond_init 创建条件变量2. pthread_cond_wait 等待条件满足3. pthr…

类的成员之:构造器(构造方法)

1.构造器的特征: 它具有与类相同的名称它不声明返回值类型。(与声明为void不同)不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值 2.构造器的作用: 1.创建对象2.初始化对象的…

StackLLaMA: A hands-on guide to train LLaMA with RLHF

Paper name StackLLaMA: A hands-on guide to train LLaMA with RLHF Paper Reading Note Project URL: https://huggingface.co/blog/stackllama Code URL: https://huggingface.co/docs/trl/index TL;DR Huggingface 公司开发的 RLHF 训练代码,已集成到 hugg…

产品设计-产品设计五要素

概念介绍 产品设计五要素分别是:战略层、范围层、结构层、框架层、表现层。自上而下的分析可用来分析已有的产品,自下而上分析则可以用来创造新的产品。下面是各个层级所包括的内容: 战略层:产品目标和用户需求(做什…

【STL(2)】

STL(2) 知识点回顾函数对象函数对象理解系统的仿函数仿函数应用 容器适配器stackdeque queuepriority_queue mapmap使用插入访问下标访问的应用:计算文件中单词的个数 知识点回顾 在STL库中存在三个容器适配器,stack - queue - p…

西门子200系列PLC学习课程大纲(课程筹备中)

西门子200系列PLC学习课程大纲如下表所示,共106课,关注我,让你从菜鸟变大神。 第1课西门子200PLC概述S7-200 PLC新特性是什么第2课S7-200 PLC的CPU介绍第3课S7-200 PLC编程软件介绍第4课S7-200 PLC通信方式有哪些第5课S7-200 PLC显示面板介绍…

6.1——我在CSDN的创作纪念日

文章目录 ⭐前言⭐相遇CSDN⭐切换到编程赛道的契机💖 好好的美工为什么切换编程赛道💖 转换编程赛道的催化剂 ⭐写博客的目的——写给未来的自己💖 初衷——为学习铺路💖 博客是灯——照亮前行的路💖 博客是路——互联…

wenet-基于预训练模型进行增量训练

1867-154075-0014 重中之重 run.sh脚本分析 wenet aishell脚本解析_weixin_43870390的博客-CSDN博客 一、准备工作 第一步:准备训练数据,拷贝到远程服务器 将准备好的数据文件0529_0531_dataset,上传到恒源云上的/hy-tmp/wenet/example…

数据结构与算法10:递归树、Trie树、B+树

目录 【递归树】 【Trie 树】 【B树】 【每日一练:最长公共前缀】 【递归树】 递归的思想是将大问题分解为小问题,然后再将小问题分解为更小的问题,直到问题的数据规模被分解得足够小,不用继续递归分解为止。如果把这个一层…

Effective第三版 中英 | 第2章 创建和销毁对象 | 用私有构造器或者枚举类型强化 Singleton 属性

文章目录 Effective第三版前言第二章 创建和销毁对象用私有构造器或者枚举类型强化 Singleton 属性 Effective第三版 前言 大家好,这里是 Rocky 编程日记 ,喜欢后端架构及中间件源码,目前正在阅读 effective-java 书籍。同时也把自己学习该书…

如何在本地配置Github的项目--Python

如何在本地配置Github的项目 0. 引言1. 初步预览2. 配置环境2.1 环境已经给出2.2 环境未曾给出 3. 数据配置4. 依次调试5. 配置完成总结 0. 引言 Github上存在大量的代码。当下载下来后可能会存在疑惑:如何在本地配置对应的项目呢? 为了帮助新手解决这一…

【Android开发基础】购物车代码整理

文章目录 一、数据库设计二、Home界面三、购物车模块四、添加五、源代码 这个月总算忙完了,总算能够抽出时间来,认真写一下博客了。整理一下购物车的代码 一、数据库设计 基于SqLite简单设计一个数据存储逻辑 实体(接收数据) im…

【数据加密】古典密码Playfair

文章目录 一、引言1、主要任务2、分支3、密码体制分类4、攻击密码系统 二、普莱费厄体制1、构造字母表,设为密钥矩阵2、设立加密方法3、加密解密4、字典集合5、结果 一、引言 1、主要任务 解决信息的保密性和可认证问题,保证信息在生成、传递、处理、保…

Swin-Transformer详解

Swin-Transformer详解 0. 前言1. Swin-Transformer结构简介2. Swin-Transformer结构详解2.1 Patch Partition2.2 Patch Merging2.3 Swin Transformer Block2.3.1 W-MSA2.3.2 SW-MSA 3. 模型配置总结 0. 前言 Swin-Transformer是2021年微软研究院发表在ICCV上的一篇文章&#x…

数据的存储(浮点型)

目录 浮点型存储的规则 1.前面我们已经学过了整形在数据中的存储是以原码,反码,补码的形式在内存中存储的,那么浮点数是以什么样的形式存储的呢? 接下来我们通过一段代码来观察——> int main() {int n 9;float* p (float*…

String AOP的使用

面向切面编程,面向特定方法编程,以方法为对象,在不修改原方法的基础上,对方法进行操作扩展等,底层是通过动态代理实现的 使用开发步骤: 1、创建一个类,加上Aspect声明为一个AOP切面类&#xff…

2023 重新开始

感觉搞 IT 的日子最近都有点不太好过。 早上接到公司电话说今天是一个大日子。 为什么是大日子,相信所有人都是懂的。这次公司将会经历一次非常大的裁员,很不幸也在列表中。不过感觉这个好像也没有什么关系。 因为早就在意料之中的事情,经历…

c语言之结构体(初阶)

目录 1:结构体类型的声明 2:结构体初始化 3:结构体成员访问 4:结构体传参 1:结构体类型的声明 1:为啥要有结构体,因为当我们描述一个复杂对象的时候,可能平时我们的一个类型不能…

常见的五种排序

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C 🔥座右铭:“不要等到什么都没有了,才下…