Pytorch一维卷积

最近开始使用了一维卷积,之前在本科做毕设的时候,虽然跟着师兄也用了一点一维卷积的东西,但是那个时候并不是真的明白一维卷积究竟是如何操作的。今天结合Pytorch特来了解一下。

Pytorch一维卷积Conv1d的官方文档在这里可以找到。下面说下自己的理解。

该函数的声明如下:

1
torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros')

重点介绍一下几个参数:

  • in_channels:输入数据的通道数,在文本应用中,该参数即为词向量的维度
  • out_channels:卷积产生的通道数,有多少个out_channels,就需要多少个一维卷积核
  • kernel_size:卷积核的尺寸,其维度为(in_channels, kernel_size)

该层要求的输入大小为$(\rm batch_size,C_{in},L_{in})$。其中,$\rm C_{in}$在文本使用中为词向量的维度;$\rm L_{in}$在文本应用中为句子的最大长度。

该层的输出大小为$(\rm batch_size,C_{out},L_{out})$。其中,$\rm C_{out}$大小为上面参数中out_channels的值,而$\rm L_{out}$为卷积核在$\rm L_{in}$维度上滑窗得到的尺寸。

该层总的参数量为(out_channels, in_channels, kernel_size)

具体过程可以参考下图,不过值得注意的是,下面的输入和Pytorch中的输入维度在后面两个维度是相反的。

img

参考

PyTorch中的nn.Conv1d与nn.Conv2d
conv1d

------ 本文结束------
坚持原创技术分享,您的支持将鼓励我继续创作!

欢迎关注我的其它发布渠道