【免费下载链接】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(公式计算) | 对应动图 |
|---|---|---|---|---|---|
| 5 | 3 | 0 | 1 | (5−3+0)/1+1 = 3 | viz/cnn-in_5_out_3_p_0_s_0.gif |
| 5 | 3 | 2 | 2 | (5−3+4)/2+1 = 4 | viz/cnn-in_5_out_4_p_2_s_2.gif |
| 3 | 3 | 2 | 1 | (3−3+4)/1+1 = 5 | viz/cnn-in_3_out_5.gif |
| 9 | 5 | 2 | 2 | (9−5+4)/2+1 = 5 | viz/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相关规则),可以从三个角度观察每张动图:
- 虚线框:动图中的虚线框表示零填充区域,其厚度即
p值。p = 0时(第一组)没有虚线框;p = 2时(后三组)外围出现两层虚线框。 - 滑动轨迹:卷积核每次停留的位置形成一行行滑动的"足迹",足迹的间距体现步长
s。s = 1时足迹连续密集,s = 2时卷积核跨格跳跃。 - 输出生长:动图右侧的输出特征图随滑动逐位置点亮,其最终边长即公式中的
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
邱锡鹏《神经网络与深度学习》第二版与通识版:电子书、章节目录、学习资源与勘误。
相关推荐
Hindsight架构深度解析:仿生记忆系统如何工作
Hindsight架构深度解析:仿生记忆系统如何工作 Hindsight作为一款先进的AI智能体记忆系统,通过仿生学原理构建了独特的记忆架构,让AI智能体能够像
人工智能AI AgentAgent 记忆MCP 服务转置卷积与空洞卷积:从卷积的逆运算到感受野扩展——nndl 第 5 章可视化技术指南
转置卷积与空洞卷积:从卷积的逆运算到感受野扩展——nndl 第 5 章可视化技术指南 本文是《神经网络与深度学习》(蒲公英书,第二版)可视化资源系列中第 5 章
ACNet:通过非对称卷积块强化卷积神经网络
ACNet:通过非对称卷积块强化卷积神经网络 项目基础介绍 ACNet是一个开源项目,由DingXiaoH在GitHub上创建和维护。该项目致力于通过引入非对称
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考