想象你正站在一条美食街上,想开一家“看图识物”的餐馆。传统的做法是一条流水线:洗菜→切菜→炒菜→装盘,所有食材用同一把刀、同一口锅从头走到尾。可顾客的食材千奇百怪——有细碎的葱花(小狗的耳朵),也有整块牛排(一辆大卡车)。一套固定刀法,切小葱的刀拿去切牛排,自然顾此失彼。深度学习在2014年也撞上了这堵墙:用固定大小的卷积核一层层处理图像,要么只看细节、要么只看轮廓。Google 研究员们的解决办法,和开美食广场一模一样:与其逼一家店做所有菜,不如同时开一排窗口,每个窗口用不同的刀工并行处理同一批食材,最后拼成一桌什锦大餐——这就是 Inception;而几年后的 DenseNet 则像一条“街坊互助送菜”的模式:每家店做好一道拿手菜,就把菜和菜谱传给后面所有店铺,让信息在全街畅通无阻。这两种经营模式,共同撑起了现代卷积神经网络的半壁江山。
对 AI 从业者而言,理解 Inception 与 DenseNet 是读懂现代 CNN 的必修课——从批归一化、残差连接到轻量化设计,大量工程技巧都能追溯到这两条思想脉络。吃透它们,你就能在真实项目中为自己的网络结构做出聪明的选型。
目录
可视化演示
通过Inception多尺度并行卷积模块、DenseNet密集连接特征复用网络、以及两种架构参数效率与梯度流对比三个模式,展示经典CNN架构的核心设计思想。
本节配有交互动效(进入视口后自动加载,约 3KB)。
Inception多尺度并行卷积模块 四个并行分支1x1/3x3/5x5/池化同时捕捉不同尺度特征 瓶颈层1x1卷积先降维再卷积大幅减少参数量 output = concat[1x1, 3x3, 5x5, pool] Inception通过多尺度并行提取丰富特征
Inception核心思想:美食广场的诞生
想象你要在一条美食街上开一家“视觉餐厅”。传统餐厅的做法是一条流水线:洗菜→切菜→炒菜→装盘,所有食材共用一套工具。但顾客的食材千奇百怪——有细碎的葱花,也有整块牛排。一套固定刀法,切小葱的刀拿去切牛排,效果自然糟糕。2014年,Google 的研究员们遇到了同样的困境:用固定大小的卷积核一层层“切”图像,要么只看到细节、要么只看到轮廓,顾此失彼。
他们的解法和开美食广场的思路一模一样:与其逼一家店做所有菜,不如同时开一排窗口,每个窗口用不同的刀工并行处理同一批食材,最后把各窗口的成果拼成一桌“什锦拼盘”。这个“美食广场”就是 Inception 模块,用它堆叠出的网络就是当年 ImageNet 冠军 GoogLeNet(Inception-v1)。它用 22 层深度就打败了更深的 VGG,秘诀在于引入“宽度”而非一味加深深度。
具体来说,Inception 模块把同一份输入特征图同时送入 4 条并行支路:1×1 卷积、3×3 卷积、5×5 卷积和 3×3 最大池化,4 条支路的输出在通道维度上拼接成下一层的输入。每条支路的“视野”不同——感受野不同——因此能同时捕捉点状细节、中等局部和大范围语义信息。输入经过四条支路后,通道数变成四者之和,网络的信息量天然变得丰富。
1. 输入特征图:$\mathbf{x}$ 是当前层的输入,形状为通道数×高×宽,相当于一批等待加工的食材。
2. 三条卷积支路:1×1、3×3、5×5 卷积并行处理同一输入,用三种不同大小的“刀口”分别提取点状、局部和大范围特征。
3. 池化支路:3×3 最大池化相当于一位“粗筛师傅”,它在局部区域只保留最突出的响应,增强平移不变性。
4. 通道拼接:$\text{Concat}$ 把四条支路的输出在通道维度上拼成一张更厚的“什锦拼盘”,产出比任何单支路都丰富的多尺度特征。
美食广场开张后,无论顾客点葱花还是牛排,总有对口的窗口在服务;同理,Inception 让网络不论遇到小纹理还是大轮廓,都能找到合适的“眼睛”去看。这就是“多分支并行、多尺度特征”的朴素魅力。
多尺度并行卷积:刀工各异的窗口
一位老练的食客评菜,会先退两步看整盘摆盘,再凑近看肉质纹理——视野的大小决定了你能看到什么。神经网络里的“视野”也有一个正式名字:感受野(Receptive Field),指的是输出特征图上的一个点,在原始输入图上最多能“看见”多大的区域。
感受野的大小由卷积核尺寸、步长和网络深度共同决定。1×1 卷积只能看见自身(相当于“只尝自己这一小口”),3×3 卷积能看见周围 3×3 的邻域,5×5 卷积则能覆盖 5×5 的范围。Inception 之所以同时安排三种尺寸,就是让视野不同的分支各司其职:小卷积核保留精细纹理,大卷积核捕捉整体语义,池化支路则专门“抓重点”。
1. 上一层视野:$\mathrm{RF}_{n-1}$ 表示第 $n-1$ 层输出上每个点已具备的感受野,即“往前已经看过多大范围”。
2. 卷积核贡献:$(k-1)$ 是当前卷积核边长相比 1 多出的部分,核越大,视野扩张得越多。
3. 步长累积:$\prod_{i=1}^{n-1} s_i$ 是之前各层步长的连乘积,表示视野扩张量要被前面的步长“放大”多少倍。
4. 整体递推:新感受野等于旧视野加上本层扩张量。因此加深网络、加大卷积核、调大步长都能扩大感受野,Inception 则选择在每一层同时提供多种扩张档位。
美食广场之所以安排四个窗口,就是让顾客远看轮廓、近看纹理都有人服务。多尺度并行,本质是一门“远近通吃”的生意——这正是 Inception 留给后世的第一个智慧。
1x1卷积技巧:浓缩高汤的秘密
做高汤要浓缩:一大锅食材慢慢熬,最后收成小小一盅精华,既保留鲜味,又节省存放空间。Inception 里的 1×1 卷积就是这位“浓缩师傅”。如果没有它,美食广场会迅速破产——因为高维特征直接做大卷积核,计算量会爆炸式增长。
举个具体的账:假设输入是 256 个通道,想用 5×5 卷积输出 256 个通道,需要 256×256×5×5≈163 万个参数。但如果先在 5×5 卷积之前用一个 1×1 卷积把通道从 256 压到 64,再算 5×5,参数就变成 256×64 + 64×256×25≈42.6 万,直接省下约三分之二。在 Inception 的原始设计中,每个较大卷积核支路前面都安插了 1×1 降维,这就是著名的“瓶颈(bottleneck)结构”。
1. 直连计算量:不使用瓶颈时,256 个输入通道全部与 256 个输出通道做 5×5 卷积,参数量是三者连乘。
2. 瓶颈降维:先用 1×1 卷积把 256 通道压缩到 64 通道,这是一步“浓缩”;再用 5×5 卷积从 64 通道扩张回 256 通道。
3. 总量对比:163.8 万对 42.6 万,节省约 74%,同时 1×1 卷积还能跨通道混合信息、配合 ReLU 增加非线性,可谓一举三得。
1×1 卷积的哲学是“先精炼、再烹饪”。它后来成为几乎所有现代 CNN 的通用零件——MobileNet、ResNet、EfficientNet 里都有它的身影。浓缩高汤虽小,却是整条美食街成本控制的命脉。
Inception系列演进:从广场到连锁
美食广场开业后不断翻新升级,Inception 家族也经历了四代迭代:v1 是基础款“四窗口”;v2 给每道菜加了标准化调味——批归一化(Batch Normalization);v3 把大锅拆成小锅;v4 则学习了隔壁优秀餐厅“上菜立即回锅”的做法——引入残差连接。
v3 最关键的改进是“分解大卷积核”。一个 5×5 卷积在数学上等价于两个 3×3 卷积串联,一个 7×7 卷积等价于 1×7 加 7×1 的非对称卷积。前者参数从 25 降到 18,后者从 49 降到 14,而且多了一层非线性,表达能力反而更强。这个技巧在保持感受野不变的前提下大幅削减计算量,是“小锅多灶”提高翻台率的典型。
1. 5×5 分解:一个 5×5 的卷积等价于两个 3×3 卷积叠加,第一层 3×3 已经覆盖了 3×3 邻域,第二层再往外扩一格,正好覆盖 5×5。
2. 7×7 分解:7×7 可以拆成“横条”1×7 和“竖条”7×1,先横后竖,两步拼出完整方形视野。
3. 参数节省:25 → 18、49 → 14,计算量下降约 28%~71%,同时中间多出的激活层带来更强的非线性表达能力。
Inception-v4 和 Inception-ResNet 进一步把残差连接引入模块,解决了超深网络训练不稳的问题。连锁店越开越精,但经营内核始终是“多窗口并行”,只是每个窗口被打磨得更省、更稳——这是工程迭代给我们的启示。
DenseNet密集连接:街坊互助的盛宴
2017 年,一条新的“互助街区”开张了,它就是 DenseNet。街区的规矩很特别:张记做好了炸酱面,就把配方和成品传给后面所有店铺;李记开张时,不需要重新研究前人的所有菜,只需在“看完全部传菜”的基础上做一道自己的新菜。每家店都能站在前人肩膀上,不用重复发明轮子。
在数学上,DenseNet 的每个“密集块(Dense Block)”内,第 $\ell$ 层的输入是前 $\ell-1$ 层所有输出的通道拼接。与 ResNet 的“相加”不同,DenseNet 用的是“拼接”——所有历史特征被完整保留、反复利用。为了让拼接不至于失控,每层只新增 $k$ 个通道,这个 $k$ 称为“增长率”(growth rate),通常取 12 或 32。
1. 密集拼接:$[\mathbf{x}_0, \mathbf{x}_1, \ldots, \mathbf{x}_{\ell-1}]$ 表示把前 $\ell$ 层的输出全部在通道维度上摞起来,一张“全街传菜汇总单”。
2. 复合函数:$H_\ell$ 是第 $\ell$ 层的复合操作,通常由批归一化、ReLU 激活和 3×3 卷积组成,相当于“参考完传菜后做出自己的新菜”。
3. 增长率:$k$ 是每层新增的通道数,$C_\ell = C_0 + k \times \ell$ 说明通道数随层数线性增长而非指数爆炸,这是街区“轻装上阵”的关键。
街坊互助的模式带来一个有趣结果:虽然每家店只做一道菜,但整条街累积的菜式(特征)极其丰富。DenseNet 用这种方式证明了“信息自由流动”比“堆更多灶台”更划算。
梯度流通改善:全街传菜的优势
之所以要“全街传菜”,是因为传统深巷子有个致命问题:信息越传越弱。在反向传播中,梯度要逐层回传,每经过一层就衰减一次,几十层之后几乎消失——这就是“梯度消失”,相当于菜谱传着传着被传丢了。DenseNet 的密集连接相当于在街区里修了无数条直达后厨的捷径:每一层都能直接收到来自损失函数的梯度信号,信息不再被困死在长巷里。
这种设计带来三重好处。第一,缓解梯度消失,网络可以做得更深。第二,形成“隐式深度监督”——每一层都像被一个隐形老师亲自检查作业,训练收敛更快。第三,特征被反复使用,不必每层都从头学一遍全部特征,因此能用更少的参数达到与传统网络同等的精度,还自带正则化效果,在小数据集上不易过拟合。
1. 普通网络单层参数:宽度为 $C$ 的普通卷积层,3×3 卷积需要 $C \times C \times 9$ 个参数,层数一深,参数像滚雪球一样膨胀。
2. DenseNet 单层参数:第 $\ell$ 层的输入通道是 $C_0 + k(\ell-1)$,输出只有 $k$ 个通道,参数量相比普通网络少了一个 $C$ 的因子。
3. 参数效率对比:当 $k \ll C$ 时(如 $k=32, C=256$),DenseNet 单层参数只有普通网络的约八分之一,这就是“用最少原料办最大宴席”的来源。
菜谱传遍全街、备料各取所需——DenseNet 用信息流动换来了参数的高效利用。这也是为什么在医学影像等小样本场景中,DenseNet 往往比同规模的“深宅大院”更稳、更准。
两架构对比应用:模式抉择
两种经营模式摆在你面前,怎么选?美食广场铺面大、窗口多,适合客流量大的地段——对应算力充足、GPU 并行能力强的环境,Inception 的多分支结构能充分榨干并行性能;互助街区地窄料省,但传菜路径多、货物摆放占地——对应 DenseNet 参数少、但训练时所有拼接特征图都要留在显存里,显存占用反而偏高。
从数据上看,DenseNet-121 约 798 万参数、2.88 GFLOPs;Inception-v3 约 2390 万参数、5.7 GFLOPs。DenseNet 在参数和计算量上明显更轻,但实际训练速度受“拼接导致显存大”的影响,未必更快。因此在选型时:追求多尺度检测(目标有大有小),选 Inception 风格;追求参数效率、小样本学习,选 DenseNet 风格。
1. 参数规模:DenseNet-121 约 798 万参数,Inception-v3 约 2390 万参数,前者省料能力一目了然。
2. 计算量规模:$2.88 \times 10^9$ 对 $5.7 \times 10^9$ 的 FLOPs,DenseNet 前向计算更轻,但拼接操作更考验显存带宽。
3. 选型启示:任务多尺度显著选 Inception,数据稀缺选 DenseNet;实际部署还要把显存、推理延迟和硬件并行效率一起纳入考量。
无论美食广场还是互助街区,都是餐饮业应对“复杂菜单”的成功模式。理解它们的选择逻辑,你就能为自己的“菜单”选对经营方式——这也是它们对后续 ResNeXt、DPN 等网络最深远的影响。
AI 应用场景
移动端实时图像分类
阶段:模型结构设计 / 端侧推理部署
解决的问题:手机算力与内存有限,传统大卷积核网络(如 VGG)单次推理慢、模型体积大。借鉴 Inception 的 1×1 瓶颈降维与多分支并行思想,MobileNet 用深度可分离卷积、Xception 用极端 Inception 化设计,把模型压缩到几 MB,推理延迟降到几十毫秒——相当于把“美食广场”打包成一辆移动餐车。
具体案例:某电商 App 的“拍图识物”功能,后端用 Xception 提取特征,前端在 100ms 内返回商品类别,支撑千万级日活用户的拍照搜索。
医学影像小样本分割
阶段:模型训练 / 特征提取
解决的问题:医学影像标注昂贵、样本稀少,普通深层网络容易过拟合,且病灶细节在深层容易丢失。DenseNet 的密集连接让低层纹理特征以短路方式直达深层解码器,特征复用带来隐式正则化,小样本下更稳——就像互助街区里每家店都能直接拿到前人的成熟配方。
具体案例:在眼底 OCT 图像病灶分割任务中,仅 300 例标注样本,采用带 DenseBlock 的 U-Net++ 分割模型,Dice 系数比同参数 ResNet 骨干高 3~5 个百分点。
目标检测多尺度骨干
阶段:特征提取骨干网络
解决的问题:检测任务需要同时识别小的行人和大的车辆,单一尺度特征远远不够。Inception 的并行多尺度结构天然适合构造特征金字塔——不同窗口负责不同尺度,正好对应“远看轮廓、近看纹理”的食客需求。
具体案例:SSD、RetinaNet 等检测器早期版本直接选用 Inception-v2 作为骨干,配合多层输出构成多尺度特征图,在 COCO 数据集上 mAP 显著提升。
Python 演示
import numpy as np def conv2d(x, kernel): # x: (C, H, W), kernel: (out_c, C, k, k) out_c, in_c, k, _ = kernel.shape C, H, W = x.shape pad = k // 2 xp = np.pad(x, ((0, 0), (pad, pad), (pad, pad)), mode="constant") out = np.zeros((out_c, H, W)) for oc in range(out_c): for ic in range(in_c): for i in range(k): for j in range(k): out[oc] += kernel[oc, ic, i, j] * xp[ic, i:i + H, j:j + W] return out class InceptionModule: """美食广场: 四个窗口并行, 各自用不同大小的刀口切食材""" def __init__(self, in_c, out_c, rng): self.w1 = rng.randn(out_c, in_c, 1, 1) * 0.1 self.w3 = rng.randn(out_c, in_c, 3, 3) * 0.1 self.w5 = rng.randn(out_c, in_c, 5, 5) * 0.1 def forward(self, x): b1 = conv2d(x, self.w1) b3 = conv2d(x, self.w3) b5 = conv2d(x, self.w5) # 把三个窗口的成果拼成什锦拼盘 return np.concatenate([b1, b3, b5], axis=0) class DenseLayer: """互助街区的一户: 吃下前面所有店铺的成果, 只做一道新菜""" def __init__(self, in_c, growth, rng): self.w = rng.randn(growth, in_c, 3, 3) * 0.1 def forward(self, feats): return np.tanh(conv2d(feats, self.w)) def dense_block(x, growth, layers, rng): """Dense Block: 每层与前面所有层拼接, 通道数按增长率线性增加""" feats = [x] for _ in range(layers): cat = np.concatenate(feats, axis=0) new = DenseLayer(cat.shape[0], growth, rng).forward(cat) feats.append(new) return np.concatenate(feats, axis=0) if __name__ == "__main__": rng = np.random.default_rng(42) x = rng.randn(3, 8, 8) y = InceptionModule(3, 4, rng).forward(x) print("Inception 输出通道:", y.shape[0], "(3 条支路各 4 通道拼接)") z = dense_block(x, growth=3, layers=4, rng=rng) print("DenseNet 输出通道:", z.shape[0], "(3 初始 + 4 层 x 增长率 3)")
b1 = conv2d(x, self.w1)调用自定义卷积函数,分别用 1×1、3×3、5×5 三种“刀口”处理同一份输入。return np.concatenate([b1, b3, b5], axis=0)把三个窗口的输出在通道维度拼接,体现 Inception 的“什锦拼盘”。cat = np.concatenate(feats, axis=0)把前面所有层的输出拼成“全街传菜汇总单”,这是 DenseNet 密集连接的灵魂。new = DenseLayer(cat.shape[0], growth, rng).forward(cat)每层只产出growth个新通道,通道数按增长率线性增加。print("DenseNet 输出通道:", z.shape[0], "(3 初始 + 4 层 x 增长率 3)")3 + 4×3 = 15 个通道,验证线性增长规律。
常见误区
误区“1×1 卷积不就是把通道数变少吗?感觉没什么技术含量,纯粹为了省算力才加的。”
正解1×1 卷积远不止“省料”——它本质是对每个像素位置做一次跨通道的线性加权求和,相当于把多个通道的“食材味道”融合成新配方;再配合 ReLU 激活,还能引入非线性,让网络表达更丰富。在 Inception 里,它还承担着“把不同窗口的输出对齐到统一尺寸”的职责。可以说,1×1 是“浓缩高汤”:既省空间,又提鲜味。
为何常见:人们最容易看见的收益是参数量下降,而“跨通道信息融合”与“非线性增强”是更隐蔽的副作用,初学者看不到账本之外的价值。
误区“DenseNet 和 ResNet 不都是给网络加'捷径'吗?一个加得密一点,本质应该差不多。”
正解两者机制完全不同。ResNet 的捷径是“相加”:$y = F(x) + x$,保留的是残差信息,通道数必须一致;DenseNet 的捷径是“拼接”:$y = [x_0, x_1, \ldots, x_{\ell-1}]$,所有历史特征原封不动地被反复利用。打个比方,ResNet 是“老带新”——师傅把经验融合进徒弟的菜里;DenseNet 是“全员传菜”——每一道历史菜肴都被完完整整端上桌,一道也不丢。
为何常见:两者都画成“从浅层连到深层”的箭头,示意图看起来很相似,初学者容易混淆“相加”与“拼接”的本质差异。
误区“Inception 模块就是四条支路拼一起,想加几个 5×5 窗口就加几个,反正并行计算不吃亏。”
正解5×5 卷积的参数量和计算量是通道数的平方增长。如果不先在 5×5 支路前用 1×1 降维,256 通道直接做 5×5 需要 163 万参数,美食广场瞬间“成本爆表”。Inception 的原始设计里,每条大卷积支路前都强制安插 1×1 瓶颈,这是模块能规模化堆叠的前提。多窗口并行是表象,“先浓缩、再精做”才是内核。
为何常见:图形化的模块图里 1×1 只是个小方块,视觉冲击力远不如 5×5 的大方块,初学者容易忽略它的关键地位。
误区“DenseNet 参数只有 ResNet 的一半,那训练时显存占用肯定也小一半,部署到小显存设备没问题。”
正解DenseNet 的“参数少”是指模型权重少,但训练时每一层的拼接特征图都要保存在显存中供后续层使用——相当于互助街区里每家店的成品菜都要留一份供后人品尝,仓库(显存)自然越堆越满。实测 DenseNet-121 训练显存往往高于同精度 ResNet-50。推理时显存确实更友好,但训练阶段必须把“传菜仓储成本”计入账本。
为何常见:人们习惯用“参数量”直接推断“显存量”,忽略了激活值(中间特征图)在反向传播中的存储开销,这两者是完全不同的两本账。
误区“深度学习嘛,深度就是一切。想提升准确率就拼命加层,Inception 和 DenseNet 的成功不就是因为层数够多?”
正解Inception 的贡献恰恰在于“在合理的深度下引入宽度”,用多尺度并行代替单纯堆深度;DenseNet 则依靠“信息流动”让深层训练变得可行。两者都说明:深度只是手段之一,特征多样性、梯度流通、参数效率同样关键。VGG 比 GoogLeNet 更深却在 ImageNet 上落败,这正是“深≠好”的经典证据。就像美食街的竞争,不是楼层越高生意越好,而是菜品搭配与动线设计决定成败。
为何常见:“深度学习”这个词天然让人聚焦“深”字,加上后来 ResNet 千层网络的宣传,容易形成“深度至上”的线性思维。
面试题
Q1. Inception 模块中 1×1 卷积层的核心作用是什么?
- A.减少通道数降低计算量← 正确答案
- B.增大感受野的范围
- C.替换激活函数的种类
- D.增加网络的输入尺寸
答案:A。1×1 卷积通过把高维通道压到低维瓶颈,再送入大卷积核支路,大幅削减参数与计算量,相当于“浓缩高汤”步骤。它不改变空间尺寸,也不增大感受野,更不负责激活函数替换或输入尺寸调整。
Q2. 关于感受野,以下说法正确的是?
- A.卷积核越大感受野越大← 正确答案
- B.卷积核越小感受野越大
- C.池化层会缩小感受野
- D.感受野和网络深度无关
答案:A。感受野指输出特征点能“看见”的输入区域大小,卷积核越大、层数越深,视野越宽。池化相当于“粗筛”,会让后续每层的感受野加速扩大,而不是缩小。因此 A 正确,其余说法都与递推公式相悖。
Q3. DenseNet 的密集连接带来了哪些益处?
- A.改善梯度流通路径← 正确答案
- B.促进特征复用共享← 正确答案
- C.显著增加参数量
- D.消除全部过拟合
答案:AB。密集连接让每层直连前面所有层,梯度可以走“短路”直达浅层,缓解梯度消失;特征被反复拼接使用,参数更省而非更多。DenseNet 确实自带正则化效果,但只能说缓解过拟合,“消除全部”言过其实。
Q4. DenseNet 的“增长率”(growth rate)参数表示什么?
- A.每层新增特征图通道数← 正确答案
- B.网络总层数的上限值
- C.初始输入图像的尺寸
- D.卷积核大小的设定值
答案:A。增长率 k 决定每一层新产生多少个通道,通道总数按 $C_0 + k \times \ell$ 线性增长,通常取 12 或 32。它既不是层数上限,也不是输入尺寸或卷积核尺寸。
Q5. Inception 与 DenseNet 在信息整合方式上的主要区别是什么?
- A.前者并行拼接后者跨层拼接← 正确答案
- B.前者跨层拼接后者并行拼接
- C.二者都使用相加融合方式
- D.二者都不使用拼接方式
答案:A。Inception 把同一输入的多个并行分支输出拼接起来,是“宽度上的拼盘”;DenseNet 把不同深度的层输出拼接起来,是“深度上的传菜”。两者都用拼接而非相加,所以 C、D 错误,A 正确。
Q6. 为什么 DenseNet 训练时的显存占用往往高于同精度的 ResNet?
- A.特征图需全部保存供拼接← 正确答案
- B.参数数量过于庞大臃肿
- C.数据加载过程更加繁琐
- D.损失函数计算更为复杂
答案:A。DenseNet 参数虽少,但每一层都要把前面所有层的输出拼接起来,反向传播时需要保存大量中间特征图,相当于互助街区每家店的成品都要留样备查,仓库自然吃紧。这不是参数、数据加载或损失函数的问题。
Q7. Inception 系列演进过程中采用了哪些关键技巧?
- A.分解大卷积核为小卷积核← 正确答案
- B.引入残差连接加快收敛← 正确答案
- C.去除全部池化层降计算
- D.完全禁用批量归一化
答案:AB。Inception-v3 把 5×5 拆成两个 3×3、把 7×7 拆成 1×7+7×1;Inception-ResNet 和 v4 引入残差连接。模块始终保留池化支路,且 v2 开始引入批归一化,所以 C、D 错误。
Q8. GoogLeNet 中辅助分类器的主要作用是什么?
- A.缓解深层梯度消失问题← 正确答案
- B.缩短模型推理的时间
- C.降低图像输入的空间
- D.增加最终输出的类别
答案:A。GoogLeNet 在中间层挂了两个辅助分类器,让梯度在浅层也能直接收到监督信号,相当于给深层网络的“长巷”开了侧门,训练时帮助收敛。推理时辅助分类器会被丢弃,不影响推理时间与输出类别。
Q9. 以下哪些属于 DenseNet 的设计特点?
- A.过渡层负责压缩通道数← 正确答案
- B.每层连接前面所有层← 正确答案
- C.利用1x1卷积做瓶颈← 正确答案
- D.完全不需要批归一化
答案:ABC。DenseNet 的 Transition 层用 1×1 卷积压缩通道、降低拼接负担;Dense Block 内每层直连前面所有层;DenseNet-BC 变体用 1×1 瓶颈减少每层输入。批归一化是 $H_\ell$ 复合函数的标配,D 错误。
Q10. 使用预训练 DenseNet 做迁移学习时,新任务类别数不同应如何处理?
- A.替换最后全连接层输出维度← 正确答案
- B.重新随机初始化所有参数
- C.删除全部卷积特征提取层
- D.增加原始训练数据集样本
答案:A。预训练模型前部的卷积层学到了通用特征(边缘、纹理),只需把最后的全连接分类头换成与新类别数匹配的新头,再微调即可,相当于“街区里换招牌、保留老菜谱”。全量重训浪费算力且易过拟合,删除卷积层则丢掉全部特征提取能力。