NLP中的卷积操作详解(torch.nn.Conv1d)
NLP领域中,由于自然文本是一维的,通常使用一维卷积即可达到要求。
在实际应用中,经embedding层处理后的数据格式一般为(batch_size, word_embeddings_dim, max_length),共三个维度。
CLASS
torch.nn.
Conv1d
(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_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)相关推荐
- pytorch中的卷积操作详解
首先说下pytorch中的Tensor通道排列顺序是:[batch, channel, height, width] 我们常用的卷积(Conv2d)在pytorch中对应的函数是: torch.nn. ...
- 模型的第一层:详解torch.nn.Embedding和torch.nn.Linear
文章目录 1.概述 2.Embedding 2.1 nn.Linear 2.2 nn.Embedding 对比 初始化第一层 1.概述 torch.nn.Embedding是用来将一个数字变成一个指定 ...
- Linux中的vi操作详解【转】
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...
- 斯坦福NLP名课带学详解 | CS224n 第11讲 - NLP中的卷积神经网络(NLP通关指南·完结)
作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/36 本文地址:https://ww ...
- tensorflow 读取cifar_对tensorflow中cifar-10文档的Read操作详解
前言 在tensorflow的官方文档中得卷积神经网络一章,有一个使用cifar-10图片数据集的实验,搭建卷积神经网络倒不难,但是那个cifar10_input文件着实让我费了一番心思.配合着官方文 ...
- 斯坦福NLP名课带学详解 | CS224n 第10讲 - NLP中的问答系统(NLP通关指南·完结)
作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/36 本文地址:https://ww ...
- java中的getnumber怎么用_java安全编码指南之:Number操作详解
简介 java中可以被称为Number的有byte,short,int,long,float,double和char,我们在使用这些Nubmer的过程中,需要注意些什么内容呢?一起来看看吧. Numb ...
- python列转行函数_Python pandas 列转行操作详解(类似hive中explode方法)
最近在工作上用到Python的pandas库来处理excel文件,遇到列转行的问题.找了一番资料后成功了,记录一下. 1. 如果需要爆炸的只有一列: df=pd.DataFrame({'A':[1,2 ...
- Gavin老师Transformer直播课感悟 - NLP信息提取中的CRF Modeling详解
一.概述 CRF的能力在于信息的依赖性和状态转移处理,它可以表达任意的状态转移和依赖关系.而信息表达能力不足则可以依靠Transformer来处理.在论文中的这幅图展示了各种模型之间是如何进行转换的, ...
最新文章
- 树——常用的数据结构
- 【Python刷题】_3
- html5和前端精要(1)-架构与基础(1)
- html中单选框颜色怎么改,如何更改单选按钮的颜色?
- 通过python基于netconf协议获取网络中网元的配置数据,助力企业网络控制自动化轻松实现!
- 导致网站服务器负担过重,利用httpd.ini实现图片和文件的防盗链
- 微信号也有加人涨粉规则和限制?
- Python全栈开发之函数
- 27条好赚钱副业的途径:自己也能不用上班月入2万+!
- 电子海图中的自动化关键技术研究
- linux安装打字软件
- 1U - 4.445厘米
- java 7编程高级进阶_Java7编程高级进阶-积累(1)
- 《数学之美》读后感与商榷
- win10查看linux文件夹,Win10系统访问Linux子系统中文件的教程
- 什么是虚拟主机?有什么用?
- 【Windows】清除指定文件类型的默认打开方式
- ubuntu安装英伟达驱动
- MySQL8.0.27版本于2021年10月19日正式GA和新功能介绍
- Windows 查看电脑型号
热门文章
- java 条件表达式_Java 三目运算符
- oracle数据库中nvarchar,Oracle数据库中的varchar,varchar2,nvarchar,nvarchar2区别及用
- Java如何xml转json字符串_xml字符串转json字符串
- npm install简介
- 二、ESP32基于Arduino IDE OLED 联网显示时间
- 微博短网址 php,php生成短网址 仿微博短网址生成代码
- 趣味:这就是数据分析~
- 王者荣耀s20服务器维护到什么时候,王者荣耀s20什么时间结束 王者荣耀s20赛季结束一览...
- 微信支持修改微信号了,我不想为当年的冲动买单了
- 明日正式上线!准备好在电脑上玩手游绝地求生:刺激战场了吗?