如何在PyTorch中执行自卷积(自身卷积)

时间:2020-01-16 08:28:18

标签: python pytorch

PyTorch提供了功能性的2D卷积操作torch.nn.functional.conv2d,该操作可以接受输入和权重参数(https://pytorch.org/docs/stable/nn.html#conv2d)。

我想进行自卷积,这意味着给定张量X。我想计算:

conv2d(X, X)

但是,过滤器的形状应为[out_ch, in_channel/groups, kernel_size, kernel_size]形式。

假设X的格式为[32, 3, 16, 16,],我试图置换X以尝试匹配权重参数的预期形式,例如:

W = X.permute(1, 0, 2, 3) # 3, 32, 16, 16 
conv2d(X, W)

但这自32 != in_channel/groups == 3 / 1 == 3

起不起作用

完整的操作本质上是这样的(以查看尺寸要求):

X + conv2d(X, X)

是否可以使用PyTorch做到这一点?

诸如SciPy之类的其他软件包提供了convolve2d操作(https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.convolve2d.html),但仅支持2D数组,并且似乎可以完成我上面想要的操作,但不支持批处理和通道

0 个答案:

没有答案