torch.nn.Conv1d图文解析

nn.Conv1d 一维卷积解析

对于一维卷积,我们可能以为是一个一维的卷积核在一条线上做卷积,但是这种理解是错的,一维卷积不代表卷积核只有一维,也不代表被卷积的feature也是一维。一维的意思是说卷积的方向是一维的。

Example:

conv1 = nn.Conv1d(in_channels=256,out_channels = 100, kernel_size = 2)
input = torch.randn(32, 35, 256)
# batch_size x text_len x embedding_size -> batch_size x embedding_size x text_len
input = input.permute(0, 2, 1)
input = Variable(input)
out = conv1(input)
print(out.size())
>>> torch.Size([32, 100, 34])

图示:
torch.nn.Conv1d图文解析_第1张图片
疑惑:
输入数据第一维表示batchsize,后边两维和前边的例子一样,不同的是输出,长度变为了34(卷积核大小为2),由于有100个卷积核,故生成了100个feature map

可能还会有一个疑惑,就是感觉100和34位置反过来了,这是因为nn.Conv1d对输入数据的最后一维进行一维卷积,为了将卷积方向设置正确,我们需要将输入序列长度这一维放到最后,即使用permute函数,这样就可以实现一维卷积。

Reference:
https://blog.csdn.net/qq_36323559/article/details/102937606

你可能感兴趣的:(Pytorch,pytorch)