Torch中的卷积层(即nn.SpatialConvolution`)和Pytorch中的卷积层(即torch.nn.Conv2d`)有何区别

时间:2019-12-01 16:28:05

标签: machine-learning conv-neural-network pytorch torch

我想知道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)

与Pytorch文档中的torch.nn.Conv2d不同。

output shape of Conv2d in Pytorch

这是否意味着它们是不同的操作?

1 个答案:

答案 0 :(得分:1)

是的,它们是不同的,因为torch没有dilation参数(有关膨胀的解释,请参见here,基本上,内核在每个内核元素的宽度和高度之间都有“空格”,这就是在图片上滑动的内容。

除了dilation以外,两个方程都是相同的(在dilation的版本中将pytorch设置为一个,并且相等)。

如果您想在dilation中使用torch,则有一个单独的类称为nn.SpatialDilatedConvolution