图解nn.Conv1d的具体计算过程
以下图解了1维卷积的计算过程,特别注意输入、卷积核参数、输出代码实现:注意pytorch中只能对倒数第2维数据进行卷积,因此传参时要转置一下,将需要卷积的数据弄到倒数第2维,这里将embeding的维度进行卷积# [1,7,5] 卷积 [2,2,5] = [1, 2, 6]a = torch.ones(1,7,5)b = nn.Conv1d(in_channels=5, out_channels=
·
-
以下图解了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])
更多推荐


所有评论(0)