一维卷积
一维卷积操作常用作文本数据或者序列数据的处理。这里以文本数据为例进行讲解。
下图左边是一个文本矩阵,是将这句话‘I like this movie very much!’转换为计算机可以处理的语言。对于宽度,可以认为是词向量的维度,高度可以表示为这个句子的最大长度,从这里可以明白卷积核必须只在高度上进行移动,因为在宽度上移动没有什么含义,在高度上进行卷积,可以判别每个单词之间的联系。然后继续看下图,左边生成了6个卷积核,每个卷积核的高度上的大小分别为2,3,4,这里也可以进一步看出每一个卷积核的宽度都等于词向量的维度。经过1维卷积之后得到了6个特征图,然后对每个特征图进行1维最大池化
import torch
from torch import nn
#卷积核的输入维度代表着词向量的维度,输入维度代表有多少个卷积核,kernel_size代表一次处理几个单词
conv1 = nn.Conv1d(in_channels=256, out_channels=100, kernel_size=3,padding=1)
#生成三维张量,第一个维度代表的是批大小,第二个维度代表句子的长度,第三个维度代表词向量的维度
input = to