首页 > 解决方案 > conv3d pytorch中的内核深度=1是什么意思

问题描述

我想了解 PyTorch 中 conv2d 和 conv3d 之间的区别。

有什么区别:

conv3d(in, out, kernel_size(1,3,3))

conv2d(in,out,kernel_size(3,3))

我检查了官方文档,但我不太明白两者之间的区别。在这种情况下,conv3d 是否应该与 conv2d 相同,因为深度为 1?任何帮助,将不胜感激。

标签: machine-learningdeep-learningcomputer-visionpytorch

解决方案


在某些特定情况下,它们可以产生相同的结果。

conv1d个例子:在 conv1d 中使用 (1, n),当内核到达行尾时conv2d,您将通过一维输入(即w>0and ),其结果已准备好。h=1但是在 con2d 上,它是您正在处理的 2D 输入(即w>0h>0),它将转到下一行,直到到达底线。所以它的结果也是一个二维对象。

层增加了输入/输出的深度,您可以拥有多个in层,这将决定每个内核的层数,以及层数,out内核的数量。

如果我的观察是正确的,我们可以说d*h*w通过conv3d( 1x3x3) 内核的d单层h*w张量与通过conv2d带有d, -d层内核的 - 层张量相同3x3。输出形状将是(N, 1, d, h, w)vs (N, d, h, w)(在d后者中用作通道数)。

在某些情况下,您可以获得相同的结果(操作)。但是,当向您的(层可以作为第四维)添加深度时conv3d,您将无法将其与 a 相匹配,conv2d顾名思义!


推荐阅读