我想了解Torch
中的卷积层(即nn.SpatialConvolution
)和Pytorch
中的卷积层(即torch.nn.Conv2d
)之间的区别
在Torch
的文档中,我找到了SpatialConvolution
的输出形状
文档中提到:“如果输入图像是一个3D张量nInputPlane x height x width
,输出图像的大小将是nOutputPlane x oheight x owidth
,其中
owidth = floor((width + 2*padW - kW) / dW + 1)oheight = floor((height + 2*padH - kH) / dH + 1)
”
这与torch.nn.Conv2d
在Pytorch文档中的描述不同。
这是否意味着它们是不同的操作?
回答:
是的,它们是不同的,因为torch
没有dilation
参数(关于扩张卷积的解释请见这里,简单来说,核在宽度和高度上每个核元素之间有“间隔”,这些间隔会在图像上滑动)。
除了dilation
参数外,这两个方程是相同的(在pytorch
的版本中将dilation
设为1时,它们是相等的)。
如果你想在torch
中使用dilation
,有一个单独的类来处理这个问题,称为nn.SpatialDilatedConvolution
。