【问题标题】:what is the behavior of SAME padding when stride is greater than 1?当步幅大于 1 时,SAME 填充的行为是什么?
【发布时间】:2021-06-03 21:23:24
【问题描述】:

我对 Tensorflow 中 SAME 填充的理解是添加了填充,以便输出尺寸(宽度和高度)与输入尺寸相同。然而,这种理解只有在 stride=1 时才真正有意义,因为如果 stride >1,那么输出维度几乎肯定会更低。

所以我想知道在这种情况下计算填充的算法是什么。是否只是添加了填充,以便将过滤器应用于每个输入值,而不是在右侧留下一些?

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    有一个公式:

    n' = 楼层((n+2*p-f)/s + 1)

    其中 n' 是输出大小,n 是输入大小,p 是填充,f 是过滤器大小,s 是步幅。

    如果您使用步幅 > 1 的 SAME 填充,p 将是使 (n+2*p-f) 可被 s 整除的最小数字。注意:p 可以是小数,因为它将在图像的两侧取平均值。

    【讨论】:

    • 你有这方面的参考吗?
    【解决方案2】:

    彼得的回答是正确的,但可能缺少一些细节。让我补充一下。

    Autopadding = SAME 表示:o = ceil(i/s),其中 o = 输出大小,i = 输入大小,s = 步幅。

    另外,通用的输出尺寸公式为:

    o = floor( (i + p - k) / s)   +   1
    

    其中新术语是 p(填充)和 k,即有效内核大小 (包括扩张,或者如果扩张被禁用,则只包括内核大小)。

    如果您开发该公式来求解 p,您会得到:

    p_min = (o-1) s - i + k # i.e., when the floor is removed from the previous equation
    p_max = o s - i + k - 1 # i.e., when the numerator of the floor % s is s-1
    

    [p_min, p_max] 范围内的任何填充值 p 都将满足条件 o = ceil(i/s),这意味着对于一个步幅 s,有 s 个满足公式的总解。

    使用 p_min 作为填充是常态,因此您可以忽略所有其他 s-1 解决方案。

    PS:这将是一维的,但对于 nD,只需为每个维度独立重复这些公式,即,

    p_min[dimension_index] = (o[dimension_index]-1)s[dimension_index] - i[dimension_index] + k[dimension_index]
    

    对于参考,这两个链接非常有用:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-13
      • 2016-03-10
      • 2022-09-29
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      • 2017-03-16
      相关资源
      最近更新 更多