-
以下图解了1维卷积的计算过程,特别注意输入、卷积核参数、输出
-
代码实现:注意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])