← 返回题目列表

CNN 中 Padding 和 Stride 如何影响输出尺寸?

高频 简单 第 1 / 25 题 更新于 2026/09/19
CNN卷积神经网络计算机视觉ResNet

简化版

Padding 决定卷积在边界外补什么以及输出是否缩小,Stride 决定卷积核每次移动多少并控制下采样。输出尺寸按向下取整公式计算;same 只表示目标输出尺度,不保证不同框架在偶数核或 stride>1 时采用相同左右填充。

详细版

  • 单维输出为 floor((I+P_left+P_right-D(K-1)-1)/S)+1

  • zero padding 会给边缘引入人为的零上下文,reflect/replicate/circular 代表不同边界假设。

  • stride=2 通常把高宽约减半、空间计算约减至四分之一。

  • 下采样前未低通会产生混叠,一像素平移也可能引发明显输出变化。

  • 多分支网络做残差相加或特征拼接时,尺寸必须逐层精确核对。

完整版教学

一、卷积输出几何由覆盖窗口决定

卷积核只有完全或部分落在补齐后的输入范围内时才产生输出。

Padding 扩展可访问范围,Stride 则跳过部分起点,二者共同决定输出网格。

工程中尺寸差一格往往来自 floor、奇偶核或非对称 padding。

只背“same 不变、valid 变小”不足以处理一般情况。

二、底层机制与关键公式

有效核尺寸是 D(K-1)+1

可用起点数量理解公式:补齐后长度减去有效核,再除以步幅,向下取整后加一。

当目标是 ceil(I/S) 的 same 输出时,总 padding 可能是奇数,必须一侧多补一个。

TensorFlow 与 PyTorch 的自动 padding 接口和分配规则需要查清,移植模型时尤其关键。

O = floor((I + P_left + P_right - D*(K-1) - 1) / S) + 1

K_effective = D*(K-1)+1

三、带数字的推演

I=7、K=3、S=2、D=1、P_left=P_right=1,输出为 floor((7+2-2-1)/2)+1=4

若不 padding,则为 floor((7-3)/2)+1=3

四、方案对比与选择

方案/场景机制或优势主要代价
valid不补边界输出缩小,边缘参与次数少
same, S=1常保持输入尺寸可能引入边界伪影
stride=2约减半高宽省计算但可能混叠

五、实际执行流程

输入长度 I -> 两侧 padding -> 得到 I+Pl+Pr
-> 放置有效核 Keff -> 每次移动 S -> 统计合法起点 -> 输出 O

六、边界条件与工程代价

非对称 padding 会造成特征坐标中心偏移。

检测和分割若多次上下采样再融合,一像素偏移可能表现为边界错位,因此要记录每层坐标变换。

stride 并不是免费的池化替代。

若输入含超过新 Nyquist 频率的纹理,直接抽样会混叠;blur pooling 等方法先低通再降采样可提高平移稳定性。

记忆钩子:先算有效核 D(K-1)+1,再按“补后长度—有效核,除 stride,floor 后加一”求输出。

七、常见误区与追问

  • 误区:same padding 永远是四边各补 K//2。 stride>1、偶数核或 dilation 下可能需要非对称计算。

  • 追问:公式为什么要 floor? 最后一个无法完整覆盖有效输入的位置不能产生输出。

  • 误区:Padding 只影响尺寸。 补充值改变边缘像素看到的上下文,也会影响预测。

  • 追问:stride=2 的计算为何约降到四分之一? 高和宽都约减半,输出位置数约为原来的 1/4。

  • 追问:如何检查残差分支尺寸? 分别计算主支和捷径的 H、W、C,必要时用投影卷积对齐。

八、加强记忆

先算有效核 D(K-1)+1,再按“补后长度—有效核,除 stride,floor 后加一”求输出。

Padding 管边界假设,Stride 管采样密度;尺寸之外还要回答坐标偏移和混叠。