【问题标题】:In PyTorch's "MaxPool2D", is padding added depending on "ceil_mode"?在 PyTorch 的“MaxPool2D”中,是否根据“ceil_mode”添加填充?
【发布时间】:2020-05-11 08:55:33
【问题描述】:

MaxPool2D 中,填充默认设置为 0,ceil_mode 也设置为 False。现在,如果我有一个大小为7x7kernel=2,stride=2 的输入,则输出形状变为3x3,但是当我使用ceil_mode=True 时,它变为4x4,这是有道理的,因为(如果以下公式正确) , 对于 7x7output_shape 将是 3.5x3.5 并且取决于 ceil_mode 它将是 3x34x4

现在,我的问题是,如果ceil_mode=True,它会改变默认的padding吗?

如果是,那么它是如何添加填充的,即它是在左边还是右边,先上还是下添加填充?

【问题讨论】:

    标签: deep-learning neural-network pytorch padding max-pooling


    【解决方案1】:

    Ceil_mode=True 更改填充。

    在 ceil 模式的情况下,会在右侧和下方添加额外的列和行。 (不是顶部也不是左侧)。它不需要是一个额外的列。这也取决于步幅值。我刚刚编写了小代码 sn-p,您可以在其中检查填充的值是如何在任一模式下汇集的。

    在我找到上面提到的post 之前,我对您的问题进行了同样的实验,似乎在池操作期间没有使用零填充,在我下面的示例中,零将是要采取的最大元素,但情况似乎并非如此。

        test_tensor = torch.FloatTensor(2,7,7).random_(-10,-5)
        print(test_tensor)
        max_pool = nn.MaxPool2d(kernel_size=2, stride=2, ceil_mode=True)
        print(max_pool(test_tensor))
        max_pool = nn.MaxPool2d(kernel_size=2, stride=2, ceil_mode=False)
        print(max_pool(test_tensor))
    

    随机样本张量:

        tensor([[[ -6.,  -9.,  -7., -10.,  -6.,  -8.,  -6.],
                 [-10., -10., -10.,  -6., -10.,  -9.,  -6.],
                 [-10.,  -7.,  -7.,  -8., -10., -10.,  -9.],
                 [ -8., -10., -10.,  -9.,  -9., -10.,  -9.],
                 [ -8.,  -6.,  -8.,  -6.,  -7.,  -7.,  -9.],
                 [-10.,  -8.,  -7., -10.,  -9.,  -6.,  -8.],
                 [-10.,  -6.,  -9., -10.,  -9.,  -9., -10.]],
    
                [[-10.,  -8.,  -6., -10.,  -9.,  -6.,  -7.],
                 [ -7.,  -7., -10., -10.,  -6.,  -9.,  -7.],
                 [ -6., -10.,  -7.,  -8.,  -8., -10.,  -9.],
                 [ -8.,  -8.,  -6.,  -7.,  -6.,  -8.,  -6.],
                 [ -9.,  -8.,  -7., -10.,  -8.,  -8.,  -7.],
                 [-10., -10.,  -6.,  -9.,  -8.,  -8.,  -8.],
                 [-10.,  -6.,  -9.,  -9.,  -7.,  -9., -10.]]])
    
    

    ceil_mode=真

    
        tensor([[[ -6.,  -6.,  -6.,  -6.],
                 [ -7.,  -7.,  -9.,  -9.],
                 [ -6.,  -6.,  -6.,  -8.],
                 [ -6.,  -9.,  -9., -10.]],
    
                [[ -7.,  -6.,  -6.,  -7.],
                 [ -6.,  -6.,  -6.,  -6.],
                 [ -8.,  -6.,  -8.,  -7.],
                 [ -6.,  -9.,  -7., -10.]]])
    
    

    ceil_mode=False

        tensor([[[-6., -6., -6.],
                 [-7., -7., -9.],
                 [-6., -6., -6.]],
    
                [[-7., -6., -6.],
                 [-6., -6., -6.],
                 [-8., -6., -8.]]])
    
    

    【讨论】:

      猜你喜欢
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      • 2016-05-24
      • 2021-05-29
      • 1970-01-01
      • 2013-07-12
      • 1970-01-01
      相关资源
      最近更新 更多