【问题标题】:How to do 'same' padding in PyTorch if (n - 1) / 2 is no integer value如果 (n - 1) / 2 不是整数值,如何在 PyTorch 中进行“相同”填充
【发布时间】:2021-01-17 16:11:55
【问题描述】:

我正在尝试重建一个用 tensorflow 编写的神经网络。对于卷积层,他们只使用padding='SAME'。这在 pytorch 中不存在。我知道,我可以使用p = (n - 1) / 2 计算 stride=1 的填充。但是,如果这不会导致整数值呢?在我的例子中,n 是 4,我总是想实现相同的填充。

【问题讨论】:

    标签: tensorflow pytorch conv-neural-network padding


    【解决方案1】:

    使用math.floor 函数将向下 舍入为最接近的整数或使用math.ceil 函数将向上 舍入为最接近的整数:

    import math
    
    # for flooring
    p = math.floor((n - 1) / 2))
    
    # for ceiling
    p = math.ceil((n - 1) / 2))
    

    例如,默认情况下,pytorch 将地板用于MaxPool 层。所以,我认为flooring 是一个很好的起点。

    【讨论】:

    • 感谢您的回答。我尝试只对// 使用整数除法,但这会导致输出维度不同,这是我必须避免的。
    • 天花板怎么样,它解决了尺寸问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 2019-10-15
    • 2021-01-16
    相关资源
    最近更新 更多