`Torch` 中的卷积层(即 `nn.SpatialConvolution`)和 `Pytorch` 中的卷积层(即 `torch.nn.Conv2d`)有什么不同
What's different between convolution layer in `Torch`(i.e `nn.SpatialConvolution`) and convolution layer in `Pytorch`(i.e `torch.nn.Conv2d`)
我想知道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
不同。
是不是说它们是不同的操作?
是的,它们是不同的,因为 torch
没有 dilation
参数(膨胀解释见 here,基本上内核在每个内核元素宽度之间有 "spaces"和高度明智,这就是在图像上滑动的内容。
除了 dilation
两个方程是相同的(在 pytorch
的版本中将 dilation
设置为 1 并且它是相等的)。
如果您想在 torch
中使用 dilation
,则有一个名为 nn.SpatialDilatedConvolution
的单独 class。
我想知道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
不同。
是不是说它们是不同的操作?
是的,它们是不同的,因为 torch
没有 dilation
参数(膨胀解释见 here,基本上内核在每个内核元素宽度之间有 "spaces"和高度明智,这就是在图像上滑动的内容。
除了 dilation
两个方程是相同的(在 pytorch
的版本中将 dilation
设置为 1 并且它是相等的)。
如果您想在 torch
中使用 dilation
,则有一个名为 nn.SpatialDilatedConvolution
的单独 class。