卷积神经网络中的填充与步幅技术解析

卷积神经网络中的填充与步幅技术解析

d2l-zh 《动手学深度学习》:面向中文读者、能运行、可讨论。中英文版被70多个国家的500多所大学用于教学。 d2l-zh 项目地址: https://gitcode.com/gh_mirrors/d2/d2l-zh

引言

在卷积神经网络(CNN)中,填充(padding)和步幅(stride)是两个至关重要的超参数,它们直接影响着卷积层的输出尺寸以及特征提取的效果。本文将深入解析这两个概念,帮助读者理解它们在CNN中的作用机制和实际应用。

填充(Padding)的作用与实现

为什么需要填充

当我们在CNN中连续应用多层卷积操作时,会发现输出特征图的尺寸逐渐缩小。这是因为每个卷积核都会"吃掉"输入图像边缘的一些像素信息。以一个240×240像素的图像为例,经过10层5×5的卷积后,尺寸会缩小到200×200,这意味着原始图像边界的大量信息丢失了。

填充技术通过在输入图像的边缘添加额外的像素(通常填充0值)来解决这个问题。通过填充,我们可以:

  1. 保持输入和输出的空间维度一致
  2. 防止图像边缘信息过快丢失
  3. 更好地控制网络架构中的特征图尺寸

填充的计算方法

假设输入形状为nₕ×n_w,卷积核形状为kₕ×k_w,当我们在高度方向填充pₕ行,宽度方向填充p_w列时,输出形状变为:

(nₕ - kₕ + pₕ + 1) × (n_w - k_w + p_w + 1)

在实际应用中,我们通常选择:

  1. 卷积核尺寸为奇数(如3×3、5×5等)
  2. 填充量p = k - 1
  3. 在高度和宽度两侧均匀分配填充量

这种配置使得输出尺寸与输入尺寸保持一致,同时保持了计算上的对称性。

代码示例

以下是使用不同填充方式的代码示例:

# 3×3卷积核,每边填充1行/列(共填充2行/列)
conv2d = nn.Conv2D(1, kernel_size=3, padding=1)

# 5×3卷积核,高度填充2行,宽度填充1列
conv2d = nn.Conv2D(1, kernel_size=(5,3), padding=(2,1))

步幅(Stride)的作用与实现

步幅的基本概念

步幅决定了卷积核在输入图像上滑动的步长。默认步幅为1,表示卷积核每次移动一个像素。增大步幅可以:

  1. 显著降低特征图的空间维度
  2. 减少计算量
  3. 扩大感受野(每个输出像素对应更大的输入区域)

步幅的计算方法

当垂直步幅为sₕ,水平步幅为s_w时,输出形状为:

⌊(nₕ - kₕ + pₕ + sₕ)/sₕ⌋ × ⌊(n_w - k_w + p_w + s_w)/s_w⌋

如果设置pₕ = kₕ - 1且p_w = k_w - 1,公式可简化为:

⌊(nₕ + sₕ - 1)/sₕ⌋ × ⌊(n_w + s_w - 1)/s_w⌋

当输入尺寸能被步幅整除时,输出尺寸就是输入尺寸除以步幅。

代码示例

以下是使用不同步幅的代码示例:

# 3×3卷积核,步幅为2,输出尺寸减半
conv2d = nn.Conv2D(1, kernel_size=3, padding=1, strides=2)

# 3×5卷积核,垂直步幅3,水平步幅4
conv2d = nn.Conv2D(1, kernel_size=(3,5), padding=(0,1), strides=(3,4))

填充与步幅的联合应用

在实际网络设计中,填充和步幅常常配合使用:

  1. 保持尺寸模式:使用适当的填充(padding)和步幅1(stride=1)来保持特征图尺寸
  2. 下采样模式:使用步幅2(stride=2)和适当填充来实现尺寸减半
  3. 非对称模式:在高度和宽度方向使用不同的填充和步幅值

实际应用建议

  1. 对于大多数情况,推荐使用奇数尺寸的卷积核(3×3、5×5等)
  2. 保持高度和宽度方向的填充和步幅对称(sₕ = s_w, pₕ = p_w)
  3. 在需要下采样时,可以考虑使用步幅2卷积代替池化层
  4. 在网络深层可以适当增大步幅以减少计算量

总结

填充和步幅是CNN中控制特征图尺寸的两个关键参数:

  1. 填充主要用于保持特征图尺寸,防止信息丢失
  2. 步幅主要用于降低特征图尺寸,减少计算量
  3. 合理组合两者可以实现灵活的特征图尺寸控制

理解并掌握这两个概念,对于设计和优化卷积神经网络架构至关重要。通过调整填充和步幅,我们可以在特征提取能力和计算效率之间找到最佳平衡点。

d2l-zh 《动手学深度学习》:面向中文读者、能运行、可讨论。中英文版被70多个国家的500多所大学用于教学。 d2l-zh 项目地址: https://gitcode.com/gh_mirrors/d2/d2l-zh

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌骊洵Perfect

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值