卷积神经网络的步长和填充
【摘要】 卷积神经网络(CNN)中的“步长”(Stride)和“填充”(Padding)是两个核心超参数,直接影响特征图的空间维度、计算效率及信息保留程度。 一、步长(Stride)1. 定义与作用定义:步长是卷积核在输入数据(如图像)上滑动时的跳跃距离。核心作用:降采样:减少特征图尺寸(如步长为2时,输出尺寸减半),降低计算量和内存占用。扩大感受野:每...
卷积神经网络(CNN)中的“步长”(Stride)和“填充”(Padding)是两个核心超参数,直接影响特征图的空间维度、计算效率及信息保留程度。
一、步长(Stride)
1. 定义与作用
- 定义:步长是卷积核在输入数据(如图像)上滑动时的跳跃距离。
- 核心作用:
- 降采样:减少特征图尺寸(如步长为2时,输出尺寸减半),降低计算量和内存占用。
- 扩大感受野:每个输出位置覆盖更大的输入区域,增强特征抽象能力。
- 控制特征粒度:步长越小,特征提取越精细;步长越大,特征越粗粒度。
2. 数学表达与影响
- 输出尺寸公式:
- :输入尺寸,:卷积核尺寸,:填充量,:步长。
- 示例:
- 输入尺寸 ,卷积核 ,步长 ,无填充时输出为 。
- 若 ,边界可能被裁剪(如PyTorch默认行为)。
3. 不同步长效果对比
步长值 | 特征图尺寸 | 特征粒度 | 适用场景 |
---|---|---|---|
1 | 较大 | 细粒度 | 细节敏感任务(如分割) |
≥2 | 较小 | 粗粒度 | 快速特征提取(如分类) |
二、填充(Padding)
1. 目的与类型
- 核心目的:
- 防止尺寸缩减:抵消连续卷积导致特征图快速缩小的问题。
- 保护边缘信息:避免角落像素被忽略(如输入边缘像素在卷积中仅被计算1次,中心像素被计算多次)。
- 常见类型:
- Valid(无填充):输出尺寸缩小,适用于计算敏感场景。
- Same(全填充):输出尺寸与输入相同,需对称填充(如 卷积核填充1层)。
- 自定义填充:如PyTorch支持非对称填充(如
padding=(1,2)
)。
2. 数学实现
- Same填充公式:
- P = f-1/2 (f是奇数的时候)
- 若卷积核为偶数,需非对称填充(如顶部1行、底部2行)。
3. 填充策略对比
填充类型 | 输出尺寸 | 边缘保护 | 计算开销 |
---|---|---|---|
Valid | 缩小 | 弱 | 低 |
Same | 与输入相同 | 强 | 中高 |
Reflect | 与输入相同 | 更强(镜像) | 高 |
三、步长与填充的组合应用
1. 设计原则
- 平衡信息保留与计算效率:
- 高分辨率任务(如分割):小步长(1) + Same填充,保留细节。
- 深层网络:大步长(2) + Valid填充,加速下采样(如ResNet)。
- 感受野控制:
- 步长增大可等效扩大感受野,但需填充补充边界信息。
2. 典型场景示例
- 图像分类任务:
- 浅层:步长1 + Same填充(细粒度特征) → 深层:步长2 + Valid填充(降采样)。
- 目标检测任务:
- 小目标检测需小步长 + 填充,避免特征图过早缩小。
- 语音/序列处理:
- 时间维度步长2可压缩序列长度(如音频采样率减半)。
四、总结一下下
参数 | 核心作用 | 典型值 | 设计考量 |
---|---|---|---|
步长 | 降采样、感受野控制 | 1(细粒度)或2(高效) | 深层网络逐步增大步长 |
填充 | 保持尺寸、保护边缘 | Same(奇核)、Valid(降采样) | 优先选奇数核简化对称填充 |
小实践思路:
- 卷积核选择:优先使用奇数尺寸(如3×3),简化Same填充计算。
- 参数调优:
- 高精度任务 → 小步长 + Same填充;
- 实时任务 → 大步长 + Valid填充。
- 高级技术:
- 空洞卷积:替代大步长,扩大感受野无信息损失。
- 反射填充:避免零填充导致的边界失真,适合生成任务。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)