【问题标题】:PyTorch nn.Conv2d output comptationPyTorch nn.Conv2d 输出压缩
【发布时间】:2021-05-13 06:11:11
【问题描述】:

我正在使用 Python 3.8 和 PyTorch 1.7.1。我看到了一个定义 Conv2d 层的代码,如下所示:

Conv2d(3, 6, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)

传递给它的输入“X”是一个 4D 张量-

X.shape
# torch.Size([4, 3, 6, 6])

这个conv层的输出量是:

c1(X).shape
# torch.Size([4, 6, 3, 3])

我正在尝试使用公式来计算任何卷积层的输出空间维度:O = ((W - K + 2P)/S) + 1,其中 W = 图像的空间维度,K = 滤波器/内核大小, P = 零填充 & S = 步幅。

对于 'c1' 卷积层,我们得到 W = 6, K = 3, S = 2 & P = 1。使用公式,你得到 O = ((6 - 3 + (2 x 1)) / 2) + 1 = 5/2 + 1 = 3.5。

输出量:(4, 6, 3, 3),因为使用的过滤器数量 = 6。 'c1' 那么 (3, 3) 的空间输出如何?我没有得到什么?

谢谢!

【问题讨论】:

    标签: python-3.x pytorch conv-neural-network


    【解决方案1】:

    你怎么会有半个像素?

    你错过了 floor 函数:

    O = floor(((W - K + 2P)/S) + 1)
    

    所以输出地图的形状是(3, 3)


    这是nn.Conv2d 的完整公式(带有膨胀):

    【讨论】:

      猜你喜欢
      • 2016-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      • 1970-01-01
      • 2016-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多