☰
nndl 二维卷积可视化详解:卷积核大小、零填充与步长对卷积过程的影响
2026/10/1 9:42:40 网站建设 项目流程

【免费下载链接】nndl

邱锡鹏《神经网络与深度学习》第二版与通识版:电子书、章节目录、学习资源与勘误。

项目地址:https://gitcode.com/GitHub_Trending/nn/nndl
点击查看免费下载

导读

本指南围绕《神经网络与深度学习(第二版)》第 5 章「卷积神经网络」配套的二维卷积演示资源展开,系统讲解二维卷积滑动过程中三个核心超参数——卷积核大小m、零填充p、步长s——各自的作用与组合效果。读完本文,你将掌握卷积输出尺寸的计算方法,能够依据m / p / s的参数组合准确预判输出特征图的大小,并理解演示动图中每个细节(虚线填充、滑动轨迹、输出尺寸)背后的卷积算术原理。

演示资源在本书中的定位

仓库的 可视化资源总览 按照《神经网络与深度学习(第二版)》的章节顺序组织内容,其中「第 5 章 · 卷积神经网络」一节收录了四个与卷积运算直接相关的可视化条目:二维卷积、转置卷积与空洞卷积、GoogLeNet 结构、CNN Explainer。本指南对应的 二维卷积演示页 是该章节的第一条可视化资源,核心用途是在一个页面内并排展示「不同卷积核大小m、零填充p、步长s下二维卷积的滑动过程」,帮助读者把抽象的公式与直观的动图一一对应起来。

演示页源码位于仓库根目录下的 viz/cnn-conv-2d.md,通过 Jekyll 的layout: default渲染,并设置了permalink: /viz/cnn-conv-2d/与旧路径/v/cnn-conv-2d/的重定向。图片素材(动图)直接存放在 viz/ 目录中,页面用.figure-grid--2col的两列网格布局并排呈现。页面底部还附有一行图例(.viz-legend),集中解释m、p、s三个符号的含义——这也是理解整页内容的关键入口。

二维卷积的三个核心参数

演示页在底部图例中对三个参数给出了明确约定:

  • m—— 卷积核大小(kernel size):参与滑动计算的滤波器尺寸,通常为正方形,如m = 3表示 3×3 卷积核。卷积核的每个位置都对应一组可学习的权重,滑动时与输入特征图上对应窗口内的元素做逐点相乘再求和。
  • p—— 零填充(zero-padding):在输入特征图的外围补上的一圈(或多圈)值为 0 的边界。零填充能让卷积核"够得着"输入边缘的像素,是控制输出尺寸、保留边缘信息的主要手段。
  • s—— 步长(stride):卷积核每次滑动时在输入上移动的间隔。步长越大,采样越稀疏,输出特征图越小。

这三个参数共同决定了卷积层的输出尺寸,也决定了动图中"卷积核走了多少步、落在哪些位置"的直观形态。

输出尺寸公式:动图背后的算术

演示页中每一组参数都能用卷积算术公式验证。对于正方形输入、正方形卷积核、均匀填充与均匀步长的情况,输出特征图的边长满足:

O = (I - m + 2p) / s + 1

其中I为输入特征图边长,O为输出特征图边长,m为卷积核边长,p为零填充层数,s为步长。只有当(I - m + 2p)能被s整除时,卷积核才能"恰好走完"输入区域,得到整数尺寸的输出——这也是设计 CNN 网络时最常见的约束之一。演示页选取的四组参数均满足这一整除条件,因此动图里卷积核每次都能完整、对称地滑过整个输入。

四组参数下的滑动过程演示

演示页共展示了四组典型参数组合,覆盖了"无填充 + 步长 1"的基准情况、"填充 + 大步长"的降采样情况、"填充 + 步长 1"的边缘保留情况,以及"大卷积核 + 填充 + 步长 2"的组合情况。下面逐一解读。

基准情形:m = 3, p = 0, s = 1

这是最经典的"标准卷积"形态:输入为 5×5,卷积核为 3×3,不填充、步长为 1。卷积核从输入左上角开始,逐像素向右、向下滑动,每次覆盖一个 3×3 的窗口。代入公式:

O = (5 - 3 + 0) / 1 + 1 = 3

输出为 3×3。可以看到,由于没有零填充,卷积核永远无法覆盖到输入最外圈像素的"外侧",因此输出尺寸比输入小,边缘信息在这一层会被压缩。

填充与步长组合:m = 3, p = 2, s = 2

这组参数同时展示了零填充与大步长的作用:输入仍为 5×5,卷积核 3×3,但在输入外围补了 2 层零填充(动图中的虚线框区域),步长增大到 2。代入公式:

O = (5 - 3 + 4) / 2 + 1 = 4

输出为 4×4。这里可以直观看到两层效果:填充把可滑动的区域向外扩展,而步长 2 又让卷积核"跳着走",最终输出介于输入和基准输出之间。在真实网络中,s > 1的卷积常被用来替代池化层实现降采样。

靠填充保住尺寸:m = 3, p = 2, s = 1

这组参数展示了一个有趣的反向效果:输入只有 3×3,卷积核同为 3×3,若不加填充则卷积核恰好覆盖整个输入、只能得到一个输出位置;而补上 2 层零填充后,可滑动范围扩大到 7×7,步长 1 的卷积核得以在扩展后的区域上密集滑动。代入公式:

O = (3 - 3 + 4) / 1 + 1 = 5

输出反而扩大到 5×5。这正是"同卷积(same padding)"类策略的原理:通过合理选择填充量,可以控制输出尺寸不小于输入,从而在加深网络的同时避免特征图过快萎缩。

大卷积核 + 填充 + 大步长:m = 5, p = 2, s = 2

最后一组参数把三个要素叠加:输入 9×9,卷积核增大到 5×5,填充 2 层,步长 2。代入公式:

O = (9 - 5 + 4) / 2 + 1 = 5

输出为 5×5。与第一组对比可以看出:更大的卷积核带来更大的感受野(一次覆盖 5×5 区域),而步长 2 负责快速降采样。这也是演示页中参数跨度最大的一组,适合用来观察"大核 + 大步长"组合下卷积核的跳跃式滑动轨迹。

参数组合速查

把四组演示的参数与输出尺寸汇总如下,便于对照公式快速复核:

输入I卷积核m零填充p步长s输出O(公式计算)对应动图
5301(5−3+0)/1+1 = 3viz/cnn-in_5_out_3_p_0_s_0.gif
5322(5−3+4)/2+1 = 4viz/cnn-in_5_out_4_p_2_s_2.gif
3321(3−3+4)/1+1 = 5viz/cnn-in_3_out_5.gif
9522(9−5+4)/2+1 = 5viz/cnn-in_9_out_5.gif

动图文件命名本身也遵循这一约定:cnn-in_{输入}_out_{输出}_p_{填充}_s_{步长}.gif,即文件名直接编码了输入/输出尺寸与关键参数,例如cnn-in_5_out_3_p_0_s_0.gif表示输入 5、输出 3、无填充、步长 0 对应的演示(步长字段 0 代表步长 1 的基准情形)。这一命名模式在仓库的 viz/ 目录中保持一致,方便按需检索对应参数的动图。

如何阅读演示动图

结合演示页的实现(样式定义见 assets/css/style.css 中.figure-grid、.viz-figure、.viz-legend相关规则),可以从三个角度观察每张动图:

  1. 虚线框:动图中的虚线框表示零填充区域,其厚度即p值。p = 0时(第一组)没有虚线框;p = 2时(后三组)外围出现两层虚线框。
  2. 滑动轨迹:卷积核每次停留的位置形成一行行滑动的"足迹",足迹的间距体现步长s。s = 1时足迹连续密集,s = 2时卷积核跨格跳跃。
  3. 输出生长:动图右侧的输出特征图随滑动逐位置点亮,其最终边长即公式中的O,可与文件名中的out字段相互印证。

延伸:转置卷积与空洞卷积

二维卷积只是卷积家族的入门形态。在 转置卷积与空洞卷积演示页 中,仓库还提供了两类进阶变体的对比动图:

  • 转置卷积(transposed convolution):把卷积过程"反过来"的运算,常用于上采样(如语义分割、生成模型中恢复分辨率),该页并排展示了同一参数下标准卷积与转置卷积的差异;
  • 空洞卷积(dilated convolution):在卷积核元素之间插入"空洞"以扩大感受野而不增加参数量,图例中新增参数d(膨胀率),d = 1时等价于标准卷积,d = 2时感受野明显扩大。

这些内容同样服务于《神经网络与深度学习(第二版)》第 5 章,可视为本指南的自然延伸。若想进一步交互式地观察卷积运算的逐层细节,CNN Explainer 提供了逐层查看激活与卷积计算的交互工具。

在仓库中查看与运行

本演示是 可视化资源总览 的一个组成部分,页面源码位于 viz/cnn-conv-2d.md,素材动图位于 viz/ 目录。仓库采用 Jekyll 构建(配置见 _config.yml,使用kramdown渲染并启用jekyll-redirect-from插件支持旧路径重定向),若想在本地查看完整效果,可参考 README.md 中的本地开发说明:

bundle install bundle exec jekyll serve # 或:pwsh -File scripts/dev.ps1

随后访问http://localhost:4000/viz/cnn-conv-2d/即可看到四组动图的并排演示。

小结

二维卷积的动图演示把公式中的m / p / s三个符号还原成了可视的滑动过程:m决定卷积核覆盖范围与感受野,p决定是否以及如何保留边缘、控制输出尺寸,s决定采样的稀疏程度与降采样力度。配合O = (I - m + 2p) / s + 1这一输出尺寸公式,读者可以做到"看图知参数、见参数算输出"。这套可视化资源与 nndl-v2 章节目录 中第 5 章「卷积神经网络」的理论内容一一对应,是学习卷积层设计(尤其是 padding 与 stride 的取值策略)时的直观辅助。

【免费下载链接】nndl

邱锡鹏《神经网络与深度学习》第二版与通识版:电子书、章节目录、学习资源与勘误。

项目地址:https://gitcode.com/GitHub_Trending/nn/nndl
点击查看免费下载

相关推荐

上一篇:Candle高级配置技巧:优化你的CNC加工流程
下一篇:PaddleNLP DeepSeek 系列模型推理部署全指南:从 WINT4/FP8 量化到多机 TP16 服务化

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询