图解nn.Conv1d的具体计算过程

  1. 以下图解了1维卷积的计算过程,特别注意输入、卷积核参数、输出
    图解nn.Conv1d的具体计算过程_第1张图片

  2. 代码实现:注意pytorch中只能对倒数第2维数据进行卷积,因此传参时要转置一下,将需要卷积的数据弄到倒数第2维,这里将embeding的维度进行卷积,最后一般会在转置过来(没办法,pytorch设计的不太好,这点确实绕了一圈)

# [1,7,5] 卷积 [2,5,3] = [1, 6, 3]
a = torch.ones(1,7,5)
b = nn.Conv1d(in_channels=5, out_channels=3, kernel_size=2)(a.permute(0,2,1))
b = b.permute(0,2,1)#再换过来

输出结果:
tensor([[
[ 0.2780, 0.6589, -0.5446],
[ 0.2780, 0.6589, -0.5446],
[ 0.2780, 0.6589, -0.5446],
[ 0.2780, 0.6589, -0.5446],
[ 0.2780, 0.6589, -0.5446],
[ 0.2780, 0.6589, -0.5446]]])
torch.Size([1, 6, 3])

你可能感兴趣的:(pytorch,深度学习,神经网络)