【问题标题】:Output Dimensions of convolution in PyTorchPyTorch 中卷积的输出维度
【发布时间】:2022-01-10 20:03:12
【问题描述】:

我的输入图片大小为68 x 224 x 3 (HxWxC),第一个Conv2d层定义为

conv1 = torch.nn.Conv2d(3, 16, stride=4, kernel_size=(9,9)).

为什么输出特征体积的大小是 16 x 15 x 54?我知道有16个过滤器,所以前面有16个,但是如果我使用[(W−K+2P)/S]+1来计算尺寸,尺寸是不可整除的。

谁能解释一下?

【问题讨论】:

    标签: python pytorch conv-neural-network


    【解决方案1】:

    特征图的计算是[(W−K+2P)/S]+1,这里[]括号表示楼层划分。在您的示例中,填充为zero,因此计算为[(68-9+2*0)/4]+1 ->[14.75]=14 -> [14.75]+1 = 15[(224-9+2*0)/4]+1 -> [53.75]=53 -> [53.75]+1 = 54

    import torch
    
    conv1 = torch.nn.Conv2d(3, 16, stride=4, kernel_size=(9,9))
    input = torch.rand(1, 3, 68, 224)
    
    print(conv1(input).shape)
    # torch.Size([1, 16, 15, 54])
    

    您也可能会看到不同的公式来计算特征图。

    PyTorch 中:

    一般来说,您可能会看到:

    但是两种情况的结果是一样的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-15
      • 1970-01-01
      • 2017-05-21
      • 2016-12-04
      • 2017-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多