跳到主要内容

从 LeNet-5(1998 年的手写数字网络)到 VGG — 图像分类网络的基本功

这一章讲三件事: 图像分类网络的三板斧各自在干什么;2012 年的 AlexNet 靠什么把准确率一举 提了十个百分点;VGG 怎样把「加深」这条路走到头,又在哪里撞墙。 读完你会拿到整本书的第一套词汇表——后面十二章全都建立在这套词上。

1. 这一章讲什么

这本书是一部按论文讲史的拆解合集:它不系统教深度学习的数学基础,而是沿着一条竞赛主线 (ILSVRC,一个每年举办的大型图像分类比赛),逐篇拆解那些改变了行业的网络论文, 重点讲每一篇如何分析前人的问题、又提出了什么方案1。作者在前言里说得很直接: 概念看不懂请移步其他基础类图书,本书假设你至少知道深度学习是什么。

我们这份拆解不接受这个假设。从这一章起,每个承重的词都在当场讲清,你不需要另一本书。

先交代舞台:图像分类,就是给一张图贴一个标签(这是猫还是狗)。这个领域的通用考卷是 ImageNet——一个上千万张图、一千个类别的数据集。2012 年之前,冠军们用的还是靠人手工从图里挑线索的 传统方法;2012 年之后,考卷被一种叫卷积网络的模型「霸榜」,此后每一届冠军作品, 就是本书第一篇的主角2

2. 顶层全景:三板斧

给图像做分类的模型,最典型的形态叫神经网络:许多极简单的计算小零件分层排开, 像流水线一样把图从「一堆像素」一路变换成「每个类别的可能性」3

流水线上的每个岗位叫一个神经元:它把收到的若干个数各自乘上一个分量、加总, 再过一道「弯折」输出给下一层。

「各自乘上一个分量」的那个分量,行话叫权重——每条连接上挂着一个可调的数, 网络要学的东西主要就是它们。

每个神经元还另配一个可调的偏置:加总之后垫底的数,相当于调「多容易触发」的门槛。

权重加偏置,合起来行话叫参数——一个网络里所有可调的数的总账。本节主走查表格里 数的正是它。一张图从第一层流进,一层层变换,最后一层吐出打分。

一张 32×32 的手写数字图


卷积层 ×2 —— 拿小窗口在图上滑动,找「这里有没有某种形状」


降采样层 ×2 —— 把图缩小,形状挪一点位置也认得出


全连接层 ×2 —— 把找到的所有形状凑在一起做判断


输出层(10 类) —— 「这是 0~9 中哪个数字」的打分表

图说:这就是 LeNet-5 的骨架。「卷积→降采样→全连接」这套组合至今仍是最主流的结构。

下面先拿一张具体的手写数字走一遍这个骨架——这是本章的主走查,后面每一节都会回到它。

主走查:一张 32×32 的「3」走进 LeNet-5

书里把 LeNet-5 的每一层都算到了个位数。它吃一张 32×32 的黑白手写数字图 (数据集 MNIST,0~9 共 10 类),五层走完4:

干什么进→出神经元数参数数
C1 卷积6 个 5×5 小窗各找一种笔画32×32 → 28×28 ×6 张4 704156
S2 缩并4 格并 1 格,图缩一半28×28×6 → 14×14×61 17612
C3 卷积16 个 5×5 窗再找组合形状14×14 → 10×10 ×161 6001 516
S4 再缩并再缩一半10×10×16 → 5×5×1640032
C5 汇总400 个数揉成 120 个5×5×16 → 12012048 120
F6 汇总再揉成 84 个120 → 848410 164
输出打分表84 → 1010850

这些数都是书里逐层算出来的567。先看一个立刻能注意到的反差: C1 层管着 4 704 个神经元,参数却只有 156 个——因为 6 个 5×5 的小窗是全图共用的, 每个小窗只需 25 个权重加 1 个偏置。这个「共用」就是卷积的全部省钱秘密,第 3.1 节细讲。

再看另一头:最后两层全连接加起来 58 284 个参数,占了全网的九成半——判断阶段比找形状阶段 费参数得多。整网加起来约 61 000 个参数(把上表右列加总,这是我们的加法,不是书里的数)。 记住这个量级,一会儿有个「一千倍」的对照。

3. 核心原理

3.1 卷积:小窗口找形状

卷积解决的问题是:同一个形状可能出现在图上的任何位置,难道每个位置都要单独学一遍吗?

做法是拿一个小的权重方阵——叫卷积核——在图上逐格滑动;每停一格,把窗口盖住的像素 与核里的权重对应相乘再求和,得到输出图上的一个数。核要找的东西,行话叫特征—— 图里可辨认的小模式,一道横边、一个锐角都算。输出图叫特征图:它在每个位置记录 「这个位置和我要找的特征有多像」。因为核只有 5×5=25 个权重却扫遍全图, 一个核就等于一个「全图通用的形状探测器」——这正是 3.1 节开头那笔账(156 个参数管 4 704 个 神经元)的来源。

书里对这两步的分工有一句精准的概括:卷积让网络响应和核形状类似的特征; 降采样——把整张图缩小——则让网络拥有一定程度的不变性,形状挪动一点、 写歪一点,输出不至于大变8

回到主走查:那张 32×32 的「3」,经过 C1 的 6 个核,变成 6 张 28×28 的特征图—— 有的核响应横笔画,有的响应笔画交汇处的锐角。至于哪个核学到什么,没人规定, 是训练(3.4 节细讲)自己试出来的。

3.2 降采样:缩小的艺术

降采样解决的问题是:特征图太大,算不起;而且形状挪两个像素,输出不该跟着抖。

做法朴素:把图切成 2×2 的小块,每块只留一个代表值(通常取最大值)——这个动作行话叫池化, 图就缩成四分之一。 LeNet-5 的 S2 层用的是更讲究的版本——块内 3 个数相加、乘一个可训练参数再加偏置, 相当于「压缩多用力」也让网络自己学9。两次降采样之后,主走查里的图从 32×32 缩到 5×5, 参数却几乎没花(两次共 44 个)。

3.3 全连接与 softmax:做决定的打分表

前两步找到的是「局部形状」,最后的判断需要「全局组合」——这一步交给全连接层。

全连接就是不再共用了:上一层每个数都连到下一层每个神经元,各自有自己的权重。 主走查里 C5 层一个神经元要接 400 个输入,所以一层就要 48 120 个参数——判断贵, 贵在这里。

最后 10 个输出过一道 softmax:把 10 个任意打分变成 10 个加起来等于 1 的百分比。 书里给它记了两条功劳。

第一,指数(一个数自己连乘自己,如 2⁴=16)把最高分与其他分的差距急剧放大——谁是老大,一目了然。

第二,所有值之和为 1,每个值因此可以当成模型对这个类别的概率(把握有多大,0 到 1 之间的一个数)来读10。走查的「3」走到这里,输出大概长成「3:0.92, 8:0.05, 5:0.02, ……」 (这些百分比为演示编的;和为 1 不是)。

3.4 训练:那 61 000 个数是怎么定下来的

上面所有权重和偏置,没有一个是人手工填的。训练说白了就是:喂图→对答案→ 把每个数朝「错得少一点」的方向挪一丁点→换下一张图,重复很多遍。

「错得有多远」有个专门的名字叫损失:输出的打分表与正确答案之间的差距。

损失一步步不再变小,就叫收敛:再练下去也基本不动了。

LeNet-5 在 MNIST 上训练 10 轮(一轮,行话叫 epoch,指把全部训练图完整过一遍)就基本收敛4

为什么挪方向是可知的?因为整条计算链都是可导的函数,可以对每个权重求「它对损失的责任」, 再把责任从输出层一路传回输入层——这个传法叫反向传播。本节只立住这两个词; 它们在下一节马上要背锅。

3.5 饱和与梯度消失:为什么 tanh 不行了

LeNet-5 用的激活函数(神经元加总之后过的那道「弯折」)是 tanh(双曲正切),AlexNet 换成了 ReLU。这个替换救了深度学习, 值得单开一节讲清楚。

tanh 这类函数有个共性:输入太正或太负时,曲线已经压平,导数接近零。 这种现象叫饱和;sigmoid(另一个老牌 S 形激活函数)同样逃不掉11。 麻烦在于「责任回传」是连乘:每过一层就乘一次那层的导数, 导数一旦普遍小于 1,连乘几十层就近乎归零——这就是梯度消失: 离输出近的层学得飞快,离输出远的层几乎收不到任何责任,等于没在学12

ReLU 的式子简单到不像话:f(x) = max(0, x)——负数归零,正数原样通过13。 它的导数在整个正半轴都是 1,连乘多少层都不会缩水,梯度消失从根上被拆掉14。 书里拿 LeNet-5 做了同场对比:只把 tanh 换成 ReLU,收敛明显变快15

但 ReLU 也有自己的病:某层的输入若全变成负数,输出就全为 0,这一层从此收不到梯度, 「死掉了」;书里给的缓解办法是把学习率(每一步把参数挪多大的步长)调小——别一脚踏进死区16。 (tanh 曲线压平、ReLU 折线、sigmoid 曲线,三张函数曲线图见原书图 1.6~1.8。)

3.6 AlexNet:把网络养大的五件套

时间快进 14 年。2012 年,AlexNet 在 ILSVRC 一举夺魁,把 top-5 错误率(前五猜不中就算错) 从上一年的 25.8% 直接打到 16.4%17;在 ImageNet 上它比第二名低了整整十个百分点: top-5 错误率 15.3% 对 26.2%18

它凭什么?网络养大了:可学习参数达到 58 322 314 个——对照 3.1 节主走查里 LeNet-5 那约 61 000 个,大约是一千倍(倍数是我们换算的)。而深和宽一上去,3.5 节那套病全会发作, 于是 AlexNet 一并交了五件配套。前两件(ReLU、训练)刚讲过,这里过另外三件半:

双显卡。 显卡不止一块、同时开工——行话叫并行——5831 万个参数当年一张卡装不下,AlexNet 把网络劈成两半放两块 GTX 580 上跑, 部分层之间还要跨卡交换特征图19。今天单卡轻松装下,这套分工只剩史料价值; 但它留下了一个伏笔:两半各自独立、参数不共享——这个被迫的形态,第六章会以「分组卷积」的 名字正式转正。

LRN:一件被淘汰的配件。 局部响应归一化(LRN)模拟生物神经的「横向抑制」, 让相邻特征图互相压制。它后来被 VGG 的对照实验判了死刑:加了 LRN 的版本错误率反而更高, VGG 论文直说「LRN 并没有什么效果」20。今天它已被 BN 等归一化方法全面取代—— BN 是什么,第 13 章专讲。

覆盖池化。 让池化的滑动步长小于池化窗口,相邻两次池化互相重叠,信息少丢一点; AlexNet 论文声称这能缓解过拟合——过拟合,就是「训练题背得滚瓜烂熟、换新题就不会做」的病,下一小节细说21

Dropout:过拟合的头号解药。 网络一大,最容易得的病是过拟合: 把训练题背得滚瓜烂熟,换新题就不会做。Dropout 的做法是在训练时随机把一定比例的隐层节点 暂时关掉(置 0),测试时一个都不关22。它为什么有效?书里给的解释是:每次关掉的组合 都不同,相当于每次训练都在采样一个不同的子网络,但这些子网络共享同一套权重; 任何节点都不能指望「隔壁那个节点替我兜着」,只能各自学出更结实的本事23。 代价是收敛变慢——书里的对照实验:加 Dropout 之后的训练损失 0.0735 对 0.0155(没加的), 看着难看了三倍多;但测试准确率从 98.26% 升到 98.41%24。背题分差点, 考试成绩好点——这笔账在深度学习里几乎总是划算的。

3.7 VGG:把「深」推到头,顺便撞墙

2014 年的亚军 VGG 把「加深」推成了一门精装修手艺。它的结构纪律极强:整个网络按池化层 切成若干,块内只做卷积;每过一块,图缩一半、特征图通道翻倍(64→128→256→512→512)25。 全家族可统一写成 m×(n×conv3+max_pooling)——n 个小卷积接一次池化,如此 m 块26。 这种规整的积木式设计让 VGG 极易裁剪到小数据集,加上官方开源(把训练好的模型免费公开,谁都能下载)了模型, 它靠「好迁移」拿下了大量商业市场——这是题外但重要的一课:好用有时比冠军更重要 (当年冠军 GoogLeNet top-5 错误率 7.3%,VGG 8.0%,差距不大)27

VGG 对后世最大的贡献是一笔参数账:把 1 层 7×7 大核换成 3 层 3×3 小核。 三层 3×3 串联,视野叠加起来与一层 7×7 相同(1+2+2+2=7)28;参数却从 50C² 降到 30C² (C 是通道数);还多过了两次非线性(把信号「弯折」而不是原样直通的处理,3.5 节的 tanh 与 ReLU 都是)。书里拿 LeNet-5 验证:单层 5×5 换成两层 3×3, 准确率确实更高,代价是训练时间慢了一半29。从此「小核堆深」成了行业默认。

但 VGG 的对照表里埋着本书第一篇真正的钩子:11 层、13 层、16 层、19 层一路比下来, 错误率递减;可到了 16 层、19 层,收益趋平,偶尔甚至出现更深的网络错误率反而更高—— 作者把这个现象留给了一节还没出现的名词:退化问题30。注意它不是过拟合, 它是「训练本身都学不好了」;怎么解决,第 03 章就是为它写的。书里还有一句预言:下一章的主角——残差(给网络加一条「直通捷径」的设计思路)——将「把网络的深度从理论上扩展到了无限大」31

4. 作者的判断与证据

书里给了实验证据的: tanh 换 ReLU 收敛更快(LeNet-5 对照,图 1.9);加 LRN 更糟 (VGG-A 对照);两层 3×3 优于一层 5×5 但训练慢一半(LeNet-5 改造,图 1.13);Dropout 换测试 准确率(0.9826→0.9841,图 1.10)。这一章的可贵之处是作者几乎每个论断都自己跑过一遍小实验, 而不是转述论文结论。

作者的个人判断(书中口吻,非论文结论): VGG-A 加 LRN 后「错误率反而更高了,而且 LRN 的加入会更加占用内存」——这句批评与 VGG 论文一致;以及「我相信作者一定探索了比 VGG-E 更深的网络,但是由于表现不理想并没有将其列在论文中」32——这是作者对同行心理的揣测, 原文没有证据,读的时候要分清。

5. 边界与局限

  • 这一章的三板斧是 1998~2014 年的形态。今天的全连接层多数已被全局平均池化替代 (书里 1.3 节讲 NIN 时会提到),LRN 已绝迹;
  • LeNet-5 的 C3-S2 稀疏(不是层层全接、只挑少数几条线)连接已被书里明说「抛弃」, 现在 uniformly 用密集连接或分组卷积33;
  • 书成稿于 2022 年,作者没料到也无需料到:这一章之后,「更深」的主战场会先被跳跃连接 (第 03 章)接管,再被第 05、10 章那种完全抛弃卷积的新架构部分接管。拿这一章当 「深度学习=卷积」的全景图就读偏了——它只是第一幕。

6. 可带走的

  1. 卷积=共享的小窗口找形状,参数极少;池化=缩小图并换来「挪一点也认得」; 全连接=昂贵的最终判断;
  2. softmax 把任意打分变成和为 1 的概率表——所有分类网络的出口几乎都是它;
  3. 饱和(tanh/sigmoid 两端压平)经反向传播连乘放大成梯度消失;ReLU 用「正半轴导数恒 1」拆掉它, 代价是可能「死神经元」,靠调小学习率缓解;
  4. 网络一大必得过拟合;Dropout 训练时随机关节点、测试时全开,等于免费训练了无数个共享权重的子网络;
  5. 3 层 3×3 = 1 层 7×7 的视野,参数 50C²→30C²,还多两次非线性——「小核堆深」是 VGG 留下的行业默认;
  6. 「块」结构(块内卷积、块间池化、通道翻倍)至今仍是一切骨干网络的骨架;
  7. 最重要的一条:加深有上限,训练损失自己会回升——这不是过拟合,这是退化, 第 03 章的主角。

7. 原文地图

主题原书节原文位置
ILSVRC 编年史(25.8→16.4 等)第一篇篇首text/01-p1-20.txt:425(搜「16.4%」) · text/01-p1-20.txt:430(搜「7.3%」) · text/01-p1-20.txt:439(搜「3.57%」)
前言:不讲基础知识前言text/01-p1-20.txt:169(搜「移步其他基础类图书」)
LeNet-5 逐层参数账1.1 从 LeNet-5 开始text/02-p21-40.txt:28(搜「4 704 个神经元」) · text/02-p21-40.txt:48(搜「1 516」) · text/02-p21-40.txt:51(搜「48 120」)
卷积与降采样的分工1.1 从 LeNet-5 开始text/02-p21-40.txt:22(搜「最主流的结构」) · text/02-p21-40.txt:23(搜「一定程度的不变性」)
softmax 的两条优点1.1 从 LeNet-5 开始text/02-p21-40.txt:54(搜「softmax 用于分类有如下优点」)
AlexNet 战绩与参数量1.1 觉醒:AlexNettext/02-p21-40.txt:87(搜「15.3%」) · text/02-p21-40.txt:89(搜「58 322 314」)
tanh 饱和、梯度消失、ReLU1.1 觉醒:AlexNettext/02-p21-40.txt:151(搜「该现象叫作」) · text/02-p21-40.txt:164(搜「链式法则的乘法特性」) · text/02-p21-40.txt:168(搜「max(0,x)」) · text/02-p21-40.txt:180(搜「减小学习率能缓解该现象」)
LRN 被淘汰1.1 觉醒:AlexNettext/02-p21-40.txt:183(搜「LRN 并没有什么效果」)
覆盖池化1.1 觉醒:AlexNettext/02-p21-40.txt:195(搜「叫作覆盖池化」)
Dropout 原理与实验1.1 觉醒:AlexNettext/02-p21-40.txt:198(搜「随机将一定比例」) · text/02-p21-40.txt:207(搜「0.982 6」)
VGG 块结构与家族通式1.2 更深:VGGtext/02-p21-40.txt:230(搜「按块以 2 倍的速度」) · text/02-p21-40.txt:251(搜「conv3 + max_pooling」)
3×3 对 7×7 的参数账1.2 VGG 介绍text/02-p21-40.txt:255(搜「具有相同的感受野」) · text/02-p21-40.txt:263(搜「更少的参数」) · text/02-p21-40.txt:270(搜「训练速度慢了二分之一」)
退化问题第一次露头1.2 VGG 介绍text/02-p21-40.txt:284(搜「退化问题」) · text/02-p21-40.txt:286(搜「从理论上扩展」)

Footnotes

  1. 出处:「前言」(text/01-p1-20.txt:169,搜「移步其他基础类图书」)。原文建议读者遇到晦涩概念「移步其他基础类图书查阅相关知识点」;每节开头的「先验知识」框也是为此设计。我们的拆解不沿用这个假设。

  2. 出处:「第一篇 卷积神经网络(篇首)」(text/01-p1-20.txt:422,搜「ILSVRC」)。ImageNet 由李飞飞主导;2013 年冠军 ZFNet 之后「ILSVRC 已被深度学习算法『霸榜』」(text/01-p1-20.txt:427,搜「霸榜」)。

  3. 出处:「1.1 从 LeNet-5 开始」(text/02-p21-40.txt:22,搜「最主流的结构」)。原文:「卷积层 + 降采样层 + 全连接层至今仍然是最主流的结构」。

  4. 出处:「1.1 从 LeNet-5 开始」(text/02-p21-40.txt:76,搜「10 个 epoch」)。原文:「经过 10 个 epoch 后,LeNet-5 基本收敛」。「epoch」指把训练集完整过一遍。 2

  5. 出处:「1.1 从 LeNet-5 开始」(text/02-p21-40.txt:28,搜「4 704 个神经元」)。C1:6 个 5×5 核,28×28 输出、156 个参数;「加上偏置」是 (5×5+1)×6=156 的来历。

  6. 出处:「1.1 从 LeNet-5 开始」(text/02-p21-40.txt:48,搜「1 516」)。C3 的 1 516 个参数按四种不同输入子集分别计算——这是 LeNet-5 特有的稀疏连接,书里明说已被抛弃。

  7. 出处:「1.1 从 LeNet-5 开始」(text/02-p21-40.txt:51,搜「48 120」)与(text/02-p21-40.txt:53,搜「84 + 1」)。C5 与 F6 两个全连接层。61 000 的总量是我们把七层参数加总的近似值,书里没给这个总数。

  8. 出处:「1.1 从 LeNet-5 开始」(text/02-p21-40.txt:23,搜「一定程度的不变性」)。

  9. 出处:「1.1 从 LeNet-5 开始」(text/02-p21-40.txt:36,搜「可训练参数再加上一个偏置」)。

  10. 出处:「1.1 从 LeNet-5 开始」(text/02-p21-40.txt:54,搜「softmax 用于分类有如下优点」)。

  11. 出处:「1.1 觉醒:AlexNet」(text/02-p21-40.txt:151,搜「该现象叫作」)。原文:「当 tanh(x) 中的 x 的绝对值比较大的时候,该局部的梯度会非常接近于 0,在深度学习中,该现象叫作『饱和』」;「同样,另一个常用的 sigmoid 激活函数也存在饱和的现象」。

  12. 出处:「1.1 觉醒:AlexNet」(text/02-p21-40.txt:164,搜「链式法则的乘法特性」)。

  13. 出处:「1.1 觉醒:AlexNet」(text/02-p21-40.txt:168,搜「max(0,x)」)。

  14. 出处:「1.1 觉醒:AlexNet」(text/02-p21-40.txt:170,搜「导数都是 1」)。原文:「无论 x 的取值有多大,f(x) 的导数都是 1,也就不存在导数小于 1 导致的梯度消失的现象了」。

  15. 出处:「1.1 觉醒:AlexNet」(text/02-p21-40.txt:171,搜「tanh 和 ReLU 两个激活」)。对比实验为 LeNet-5 分别用 tanh 与 ReLU 的收敛曲线(图 1.9)。

  16. 出处:「1.1 觉醒:AlexNet」(text/02-p21-40.txt:178,搜「死掉」)与(text/02-p21-40.txt:180,搜「减小学习率能缓解该现象」)。

  17. 出处:「第一篇 卷积神经网络(篇首)」(text/01-p1-20.txt:425,搜「16.4%」)。

  18. 出处:「1.1 觉醒:AlexNet」(text/02-p21-40.txt:87,搜「15.3%」)。原文:「top-1 错误率是 37.5%,top-5 错误率则是 15.3%(直接比第二名的 26.2% 低了约 10 个百分点)」。top-1/top-5:猜的第一名或前五名包含正确答案才算对。

  19. 出处:「1.1 觉醒:AlexNet」(text/02-p21-40.txt:90,搜「GTX 580」)与(text/02-p21-40.txt:141,搜「两块 GPU 并行训练」)。

  20. 出处:「1.1 觉醒:AlexNet」(text/02-p21-40.txt:183,搜「LRN 并没有什么效果」);VGG-A 的对照数据见(text/02-p21-40.txt:275,搜「错误率反而更高」)。

  21. 出处:「1.1 觉醒:AlexNet」(text/02-p21-40.txt:195,搜「叫作覆盖池化」)。

  22. 出处:「1.1 觉醒:AlexNet」(text/02-p21-40.txt:198,搜「随机将一定比例」)与(text/02-p21-40.txt:201,搜「不对节点进行丢弃」)。

  23. 出处:「1.1 觉醒:AlexNet」(text/02-p21-40.txt:199,搜「采样一个不同的网络结构」)与(text/02-p21-40.txt:199,搜「节点之间的耦」)。

  24. 出处:「1.1 觉醒:AlexNet」(text/02-p21-40.txt:207,搜「0.982 6」)。训练损失 0.0735 对 0.0155 同段。

  25. 出处:「1.2 更深:VGG」(text/02-p21-40.txt:230,搜「按块以 2 倍的速度」)。

  26. 出处:「1.2 VGG 介绍」(text/02-p21-40.txt:251,搜「conv3 + max_pooling」)。

  27. 出处:「第一篇 卷积神经网络(篇首)」(text/01-p1-20.txt:430,搜「7.3%」);VGG 凭开源模型占领市场见(text/02-p21-40.txt:239,搜「商业市场」)。

  28. 出处:「1.2 VGG 介绍」(text/02-p21-40.txt:255,搜「具有相同的感受野」)。「感受野」=一个输出神经元能「看见」的输入区域大小;1+2+2+2=7 是我们补的算术,原文只给了计算式 rfsize=(out−1)×stride+ksize。

  29. 出处:「1.2 VGG 介绍」(text/02-p21-40.txt:270,搜「训练速度慢了二分之一」)。

  30. 出处:「1.2 VGG 介绍」(text/02-p21-40.txt:284,搜「退化问题」)。

  31. 出处:「1.2 VGG 介绍」(text/02-p21-40.txt:286,搜「从理论上扩展」)。

  32. 出处:「1.2 VGG 介绍」(text/02-p21-40.txt:285,搜「我相信作者一定探索」)。

  33. 出处:「1.1 从 LeNet-5 开始」(text/02-p21-40.txt:41,搜「稀疏连接的方式已被抛弃」)。