NLP领域中,由于自然文本是一维的,通常使用一维卷积即可达到要求。

在实际应用中,经embedding层处理后的数据格式一般为(batch_size, word_embeddings_dim, max_length),共三个维度。

CLASS torch.nn.Conv1d(in_channelsout_channelskernel_sizestride=1padding=0dilation=1groups=1bias=Truepadding_mode='zeros')

in_channels:输入通道数。一般情况下,将其设置为与word_embeddings_dim相等。

out_channels:输出通道数。决定了一个filter含有多少个卷积核。

kernel_size:卷积核大小。与图像处理中使用的Conv2d不同,Conv1d中的kernel_size只需指定一个整数。

例如:

conv1 = torch.nn.Conv1d(in_channels=256, out_channels=3, kernel_size=5)

这样,filter实际的维度为:3*256*5,(3个卷积核,卷积核维度为256*5),卷积核窗口在句子长度的方向上滑动,进行卷积操作。

pytorch中使用示例(为简便起见,这里将batch_size和out_channels均设置为1):

import torch
a = [[[1, 2, 3, 4],[2, 3, 4, 1],[3, 2, 1, 4],[4, 3, 1, 2],[2, 4, 1, 3]]]                                                        # embedding后的数据:(batch_size, word_embeddings_dim, max_length) = (1, 5, 4)
b = [[[1, 9],[2, 8],[3, 7],[4, 6],[5, 5]]]                                                              # filter:(out_channels, word_embeddings_dim, kernel_size) = (1, 5, 2)
a = torch.tensor(a)
conv1 = torch.nn.Conv1d(in_channels=5, out_channels=1, kernel_size=2)       # in_channels = word_embeddings_dim,  out_channels = filter中卷积核个数
print(conv1.weight.shape)                                                   # torch.Size([1, 5, 2])
conv1.weight.data = torch.tensor(b)
print(conv1(a).shape)                                                       # (batch_size, out_channels, max_length-kernel_size+1) = (1, 1, 3)
print(conv1(a).data)                                                        # tensor([[[134, 123, 122]]])# 1*1+2*2+3*3+4*4+2*5+2*9+3*8+2*7+3*6+4*5=134
# 2*1+3*2+2*3+3*4+4*5+3*9+4*8+1*7+1*6+1*5=123
# 3*1+4*2+1*3+1*4+1*5+4*9*1*8+4*7+2*6+3*5=122

在NLP中,对卷积操作的应用可参考下图(来源:http://www.wildml.com/2015/11/understanding-convolutional-neural-networks-for-nlp/)

NLP中的卷积操作详解(torch.nn.Conv1d)相关推荐

  1. pytorch中的卷积操作详解

    首先说下pytorch中的Tensor通道排列顺序是:[batch, channel, height, width] 我们常用的卷积(Conv2d)在pytorch中对应的函数是: torch.nn. ...

  2. 模型的第一层:详解torch.nn.Embedding和torch.nn.Linear

    文章目录 1.概述 2.Embedding 2.1 nn.Linear 2.2 nn.Embedding 对比 初始化第一层 1.概述 torch.nn.Embedding是用来将一个数字变成一个指定 ...

  3. Linux中的vi操作详解【转】

    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...

  4. 斯坦福NLP名课带学详解 | CS224n 第11讲 - NLP中的卷积神经网络(NLP通关指南·完结)

    作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/36 本文地址:https://ww ...

  5. tensorflow 读取cifar_对tensorflow中cifar-10文档的Read操作详解

    前言 在tensorflow的官方文档中得卷积神经网络一章,有一个使用cifar-10图片数据集的实验,搭建卷积神经网络倒不难,但是那个cifar10_input文件着实让我费了一番心思.配合着官方文 ...

  6. 斯坦福NLP名课带学详解 | CS224n 第10讲 - NLP中的问答系统(NLP通关指南·完结)

    作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/36 本文地址:https://ww ...

  7. java中的getnumber怎么用_java安全编码指南之:Number操作详解

    简介 java中可以被称为Number的有byte,short,int,long,float,double和char,我们在使用这些Nubmer的过程中,需要注意些什么内容呢?一起来看看吧. Numb ...

  8. python列转行函数_Python pandas 列转行操作详解(类似hive中explode方法)

    最近在工作上用到Python的pandas库来处理excel文件,遇到列转行的问题.找了一番资料后成功了,记录一下. 1. 如果需要爆炸的只有一列: df=pd.DataFrame({'A':[1,2 ...

  9. Gavin老师Transformer直播课感悟 - NLP信息提取中的CRF Modeling详解

    一.概述 CRF的能力在于信息的依赖性和状态转移处理,它可以表达任意的状态转移和依赖关系.而信息表达能力不足则可以依靠Transformer来处理.在论文中的这幅图展示了各种模型之间是如何进行转换的, ...

最新文章

  1. 树——常用的数据结构
  2. 【Python刷题】_3
  3. html5和前端精要(1)-架构与基础(1)
  4. html中单选框颜色怎么改,如何更改单选按钮的颜色?
  5. 通过python基于netconf协议获取网络中网元的配置数据,助力企业网络控制自动化轻松实现!
  6. 导致网站服务器负担过重,利用httpd.ini实现图片和文件的防盗链
  7. 微信号也有加人涨粉规则和限制?
  8. Python全栈开发之函数
  9. 27条好赚钱副业的途径:自己也能不用上班月入2万+!
  10. 电子海图中的自动化关键技术研究
  11. linux安装打字软件
  12. 1U - 4.445厘米
  13. java 7编程高级进阶_Java7编程高级进阶-积累(1)
  14. 《数学之美》读后感与商榷
  15. win10查看linux文件夹,Win10系统访问Linux子系统中文件的教程
  16. 什么是虚拟主机?有什么用?
  17. 【Windows】清除指定文件类型的默认打开方式
  18. ubuntu安装英伟达驱动
  19. MySQL8.0.27版本于2021年10月19日正式GA和新功能介绍
  20. Windows 查看电脑型号

热门文章

  1. java 条件表达式_Java 三目运算符
  2. oracle数据库中nvarchar,Oracle数据库中的varchar,varchar2,nvarchar,nvarchar2区别及用
  3. Java如何xml转json字符串_xml字符串转json字符串
  4. npm install简介
  5. 二、ESP32基于Arduino IDE OLED 联网显示时间
  6. 微博短网址 php,php生成短网址 仿微博短网址生成代码
  7. 趣味:这就是数据分析~
  8. 王者荣耀s20服务器维护到什么时候,王者荣耀s20什么时间结束 王者荣耀s20赛季结束一览...
  9. 微信支持修改微信号了,我不想为当年的冲动买单了
  10. 明日正式上线!准备好在电脑上玩手游绝地求生:刺激战场了吗?