news 2026/10/10 9:21:57

VGG、AlexNet、GoogLeNet对比

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VGG、AlexNet、GoogLeNet对比

文章目录

  • VGG与AlexNet的对比
    • VGG构造的features部分
    • 主要升级点
    • 为什么 3×3 堆叠是重要升级
    • 也要看到 VGG 的代价
  • 与GoogLeNet的对比
    • 三者核心差异
    • GoogLeNet 最关键的三个升级
      • 1. Inception 模块:并行多尺度卷积
      • 2. 1×1 卷积:先降维,再计算
      • 3. 全局平均池化替代全连接层
    • 一句话总结
  • 疑问
    • 感受野与参数量是不一样的
      • 先看感受野
      • 再看参数量
    • 卷积核里的权重就是神经网络自己要学的参数
      • 它不是人写死的
      • 训练时怎么学
      • 一个 3×3 卷积核有多少权重?
    • 在深度学习项目中,全联接层会更占内存吗?
      • 1. 参数量:卷积层通常比全连接层少很多
      • 2. 训练显存:卷积层的激活值可能很大
      • 3. 可以这样记
    • 上面说的中间激活值是什么?
      • 用一个例子理解
      • 为什么训练时要存下来?
      • 为什么卷积层的激活值可能很大?
      • 总结
    • 卷积核的通道数和上一层的通道数是一样的,卷积核的组数能够改变其通道数,对吗?
      • 1. 普通卷积:卷积核通道数 = 输入通道数
      • 2. 分组卷积:卷积核通道数不一定等于完整输入通道数
      • 更准确的总结

VGG与AlexNet的对比

VGG 相比 AlexNet 最大的升级不是“多几层”那么简单,而是把卷积神经网络从AlexNet 那种大卷积核、结构不太统一的深度模型,升级成了全 3×3 小卷积核、可重复堆叠、更规整的深度网络范式。

VGG构造的features部分

  • 其中16与19在下方可以展示出来

  • VGG-16全过程

  • VGG-16占用的内存,后面的全联接层占用将近90%

主要升级点

方面AlexNetVGG
卷积核11×11、5×5 等大卷积核全部主要用 3×3 小卷积核
网络深度5 层卷积 + 3 层全连接VGG16 有 13 层卷积 + 3 层全连接;VGG19 更深
感受野靠大卷积核直接获得多个 3×3 堆叠等效大感受野
非线性每层后接 ReLU更多 3×3 层意味着更多 ReLU,非线性更强
池化有 3×3 池化统一用 2×2 最大池化
归一化使用 LRN去掉 LRN
结构风格有效但不统一高度规整,易于复现和迁移

为什么 3×3 堆叠是重要升级

VGG 用多个 3×3 卷积代替 AlexNet 中的大卷积核,比如:

  • 2 个 3×3 卷积≈ 1 个 5×5 卷积的感受野;
  • 3 个 3×3 卷积≈ 1 个 7×7 卷积的感受野。

这样做有三个好处:

  1. 参数更少
    在相同通道数下,多个 3×3 卷积的参数量通常低于单个大卷积核。比如一个 7×7 卷积相当于 49 倍通道平方级参数,而 3 个 3×3 卷积只有 27 倍。

  2. 非线性更强
    每加一层 3×3 卷积就会多一次 ReLU,网络表达能力更强,能学习更复杂的特征。

  3. 结构更统一
    AlexNet 第一层用 11×11,后面又有 5×5,结构比较杂;VGG 基本统一成 3×3 卷积 + 2×2 池化,模块感很强,后面很多骨干网络都受它影响。

也要看到 VGG 的代价

VGG 虽然结构更漂亮、特征提取能力更强,但参数量很大。VGG16 大约有1.38 亿参数,其中大部分集中在最后的全连接层,所以显存占用和推理成本都比 AlexNet 高很多。

可以把它理解成:
AlexNet 证明了“深度 CNN 有用”,VGG 则证明了“用统一的小卷积核不断加深网络,能进一步提升性能”。再往后,ResNet 才真正解决了“网络太深反而难训练”的问题。


与GoogLeNet的对比

GoogLeNet 和 AlexNet、VGG 最大的区别不是“更深”,而是从“堆层数”转向“设计模块”。它用Inception 模块、1×1 卷积降维、全局平均池化来让网络更深、更准,同时参数反而更少。

三者核心差异

维度AlexNetVGGGoogLeNet
层数8 层VGG16:16 层;VGG19:19 层22 层
卷积核11×11、5×5 等大核几乎全部 3×31×1、3×3、5×5 并行
设计思路加深 LeNet,证明 CNN 有效用多个 3×3 堆叠获得更大感受野用 Inception 模块做多尺度特征提取
参数量约 6000 万约 1.38 亿约 500 万–700 万
尾部结构大尺寸全连接层大尺寸全连接层用全局平均池化替代大 FC
特点引入 ReLU、Dropout、多 GPU结构统一、可复现、但参数多高效、多尺度、参数少、结构复杂

GoogLeNet 最关键的三个升级

1. Inception 模块:并行多尺度卷积

AlexNet 和 VGG 主要是串行堆叠卷积层:一层接一层。

GoogLeNet 则把一层设计成一个Inception 模块,对同一个输入同时做:

  • 1×1 卷积
  • 3×3 卷积
  • 5×5 卷积
  • 3×3 最大池化

然后把这四路输出在通道维度上拼接起来。

这样网络就能在同一层同时捕获:

  • 小尺度细节
  • 中等尺度结构
  • 大尺度上下文
  • 显著性特征

相当于让网络自己选择“用多大感受野看这张图”。

2. 1×1 卷积:先降维,再计算

如果直接对很多通道做 5×5 卷积,计算量会很大。GoogLeNet 在 3×3、5×5 卷积之前先加1×1 卷积做通道压缩。

比如输入 64 通道:

  • 直接做 5×5 卷积:计算量很大;
  • 先用 1×1 卷积压到 32 通道,再做 5×5:计算量大幅下降。


1×1 卷积还能增加非线性,因为后面还会接激活函数。

3. 全局平均池化替代全连接层

AlexNet 和 VGG 最后都有很大的全连接层,参数量非常夸张。VGG16 的全连接层就占了绝大多数参数。

GoogLeNet 最后不用大 FC,而是用全局平均池化,把每个通道的特征图直接平均成一个值,再接分类层。

这就是它参数量只有几百万的重要原因。

一句话总结

  • AlexNet:证明深度 CNN 可行;
  • VGG:证明小卷积核堆深有效,但参数很重;
  • GoogLeNet:证明结构设计和计算效率同样重要,用 Inception 模块和 1×1 卷积让网络既深又轻。

后面 ResNet 再解决“网络太深难训练”的问题,GoogLeNet 其实已经为“高效深度网络”打下了很重要的基础。


疑问

感受野与参数量是不一样的

32= 27这个数,在 VGG 里确实会反复出现,但它不是“感受野大小”,而是:

3 个 3×3 卷积核里,每个核有 9 个权重,3 层一共 3 × 9 = 27 个权重系数。

先看感受野

感受野是指:输出上的一个点,能“看到”输入上多大的区域。

  • 1 个 3×3 卷积:感受野 =3
  • 2 个 3×3 堆叠:感受野 =5
  • 3 个 3×3 堆叠:感受野 =7

所以 VGG 说:

3 个 3×3 卷积堆叠,感受野 ≈ 1 个 7×7 卷积。

这里说的是“看得一样大”,不是“参数一样多”。

再看参数量

假设输入通道数和输出通道数都是C,并且只算卷积核权重,不算 bias。

一个 7×7 卷积层的参数量是:

7 × 7 × C × C = 49C²

三个 3×3 卷积层的参数量是:

3 × (3 × 3 × C × C) = 27C²

所以:

27C² < 49C²

也就是说,在获得相同 7×7 感受野的前提下,3 个 3×3 卷积比 1 个 7×7 卷积少约45%的参数。

如果考虑通道数,一个卷积核的参数量是:

kernel_h × kernel_w × in_channels × out_channels

所以 VGG 里“参数更少”的意思是:

用3 个 3×3达到和1 个 7×7相同的感受野,但权重参数从49C²降到27C²。

而且每层后面都会接一次 ReLU,所以 3 个 3×3 还比 1 个 7×7 多了两次非线性变换,表达能力更强。


卷积核里的权重就是神经网络自己要学的参数

和全连接层里的权重本质一样的

它不是人写死的

传统图像处理里,卷积核可以是人工设计的,比如:

  • 边缘检测核
  • 模糊核
  • 锐化核

这些值是工程师根据经验写好的,训练时不会变。

但在 CNN 里,卷积核的值一开始是随机初始化的,比如用 Xavier 或 He 初始化。

训练时怎么学

训练过程大致是:

  1. 初始化:给每个卷积核随机赋一组小数值。
  2. 前向传播:用这些卷积核对图像做卷积,得到特征图。
  3. 算损失:看模型预测和真实标签差多少。
  4. 反向传播:计算损失对每个权重的梯度。
  5. 更新权重:按梯度方向微调卷积核里的每个值。

反复很多轮以后,卷积核就不再是随机噪声了,会逐渐变成能提取边缘、纹理、形状等特征的“过滤器”。

一个 3×3 卷积核有多少权重?

如果输入有C_in个通道,输出有C_out个通道,那么一个卷积层会学:

C_out × C_in × 3 × 3个权重

比如输入 3 通道、输出 16 通道、卷积核 3×3:

16 × 3 × 3 × 3 = 432 个权重

每个卷积核不是只有 9 个数,而是9 × 输入通道数个数。

所以可以把它理解成:
卷积核 = 一组可学习的权重矩阵,网络通过训练自动决定每个位置该取什么值。


在深度学习项目中,全联接层会更占内存吗?

要看说的“内存”是哪一种。按参数量/模型权重来看,卷积层通常远小于全连接层;但按训练时中间激活值来看,卷积层不一定少。

1. 参数量:卷积层通常比全连接层少很多

卷积层之所以参数少,是因为它共享卷积核权重:同一个 3×3 卷积核会在整张特征图上滑动复用。

全连接层则是每个输入维度都有独立权重,所以一旦输入维度很大,参数量会爆炸。

以 VGG16 为例,输入是 224×224×3:

  • 总参数量约1.38 亿
  • 卷积层部分约1470 万
  • 全连接层部分约1.236 亿
  • 全连接层占参数量约90%

尤其是第一个全连接层,输入是 7×7×512 = 25088,输出是 4096,仅这一层就有约1.02 亿参数。

所以如果只看“模型权重占多少内存”,你的直觉基本正确:卷积层参数少,全连接层参数多。

2. 训练显存:卷积层的激活值可能很大

训练时 GPU 显存不只存参数,还要存:

  • 模型参数
  • 每层输出的激活值
  • 反向传播的梯度
  • 优化器状态

其中激活值往往很占显存。

卷积层输出的是特征图,比如形状是:

[batch_size, channels, height, width]

如果分辨率高、batch size 大,激活值就会很大。比如前面几层卷积输出可能是224×224×64,这种空间尺寸很大,激活值显存并不小。

而全连接层输出通常只是一个一维向量,比如 4096 维,激活值本身不大;但它前面的权重矩阵非常大,所以参数显存高。

3. 可以这样记

比较维度卷积层全连接层
参数量少,因为权重共享多,每个输入都有独立权重
参数显存通常较小通常较大
激活值显存可能很大,尤其高分辨率时通常较小
计算量可能很高,因为要在空间上滑动取决于输入维度

所以更准确的说法是:

卷积层的参数量和参数显存通常远小于全连接层;但卷积层在训练时产生的中间激活值可能很多,尤其输入图像分辨率高、batch size 大时,显存占用不一定低。

这也是为什么后来很多网络,比如 ResNet、GoogLeNet,会用全局平均池化替代大尺寸全连接层,能显著减少参数量。


上面说的中间激活值是什么?

中间激活值就是网络前向传播时,每一层算出来的“输出结果”。

用一个例子理解

假设输入一张224×224×3的图片,经过第一层卷积后,输出可能是112×112×64的张量。这个张量就是第一层的激活值。

它会被送到第二层继续计算,第二层又输出一个新的张量——这就是第二层的激活值。

一层一层往下传,每一层都会产生一个“中间结果”,这些就是中间激活值。

为什么训练时要存下来?

因为反向传播需要它们。

反向传播计算梯度时,要用到前向传播时每一层的输出。如果前向时没存,反向就没法算。所以训练过程中,所有层的激活值都要同时留在显存里,直到反向传播结束才能释放。

为什么卷积层的激活值可能很大?

卷积层输出的是三维特征图(高 × 宽 × 通道数),比如:

112 × 112 × 64 = 802,816个数值

如果 batch size 是 32,那这一层的激活值就有:

802,816 × 32 ≈ 2569 万个数值

按 FP32(4 字节)算,约100 MB,仅一层就占这么多。

而全连接层输出只是一个一维向量,比如 4096 维,激活值本身很小。

总结

卷积层全连接层
参数量少(权重共享)多(每个输入独立权重)
激活值可能很大(空间分辨率高)通常很小(一维向量)

所以之前说的“卷积层显存不一定少”,指的是激活值显存,不是参数显存。


卷积核的通道数和上一层的通道数是一样的,卷积核的组数能够改变其通道数,对吗?

理解基本方向是对的,但要分两种情况看。

1. 普通卷积:卷积核通道数 = 输入通道数

在标准卷积里:

  • 每个卷积核的通道数必须等于上一层输出的通道数;
  • 卷积核的个数决定输出通道数。

比如输入是64通道,用128个3×3卷积核:

  • 每个卷积核形状是3 × 3 × 64;
  • 输出就是128通道。

所以这里你说的“卷积核的通道数和上一层的通道数一样”是对的。

2. 分组卷积:卷积核通道数不一定等于完整输入通道数

如果用了分组卷积 groups > 1,就不一样了。

假设输入64通道,输出128通道,groups=4:

  • 输入被分成 4 组,每组16通道;
  • 每组卷积核只负责对应的那16个输入通道;
  • 所以每个卷积核的通道数是64 / 4 = 16,而不是完整的64。

这时可以说:通过改变组数,确实可以改变每个卷积核实际连接的通道数。

更准确的总结

情况卷积核通道数输出通道数
普通卷积等于输入通道数等于卷积核个数
分组卷积等于输入通道数 / groups仍等于卷积核个数
深度可分离卷积每组只处理 1 个通道取决于后面逐点卷积

所以更严谨的说法是:

普通卷积中,单个卷积核的通道数等于输入通道数;输出通道数由卷积核个数决定。分组卷积中,每个卷积核只连接输入的一部分通道,组数会影响每个卷积核实际处理的通道数。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/10 9:20:55

意识障碍研究-论文阅读2

Multimodal assessment improves neuroprognosis performance in clinically unresponsive critical-care patients with brain injury 论文链接&#xff1a;官网 感觉每篇论文精读太慢了&#xff0c;针对临床类论文应当以研究问题为主&#xff0c;进而扩展自己的思路&#xf…

作者头像 李华
网站建设 2026/10/10 9:20:18

多个微信号一起接怎么管?微信自动回复的统一话术与分流

主号在响&#xff0c;售后号在响&#xff0c;刚做活动的那个号也在响&#xff0c;三台手机摆在桌上&#xff0c;谁在回哪个号全靠值班的人记性。账号一多&#xff0c;问题从来不是「回复不过来」&#xff0c;而是消息落到谁手里、话术是不是同一个版本、汇总的时候看哪个数。这…

作者头像 李华
网站建设 2026/10/10 9:18:49

AllData搭建数据治理平台,集成开源项目OpenDataWorks/Datavines/OpenMetaData,建设数据资产平台、数据质量平台、元数据管理平台(一)

►顶部微信名片可直接添加市场总监&#xff0c;商务咨询、方案沟通即时响应 ►点击链接了解更新详情&#xff1a;演示体验、社群咨询、商务采购&#xff1a; https://docs.qq.com/doc/DVHlkSEtvVXVCdEFo 日常中是否有这样的烦恼&#xff1f;数据分散在各个业务系统&#xff0c…

作者头像 李华
网站建设 2026/10/10 9:18:26

EtherCAT 分布式时钟 DC 到底是什么?为什么多轴运动控制离不开它

在前面的文章中&#xff0c;我们已经从多个角度分析了 EtherCAT 的过程数据机制。我们知道&#xff1a;PDO 负责周期性过程数据交换&#xff1b;PDO Mapping 决定哪些对象进入过程数据&#xff1b;Sync Manager 管理过程数据通道&#xff1b;IgH Domain 把过程数据组织成主站侧…

作者头像 李华
网站建设 2026/10/10 9:17:55

小白程序员如何备战大模型面试?收藏这份2026年最新攻略!

本文基于作者上百场面试经验&#xff0c;分享了2026年大模型面试的最新趋势和技巧。文章指出&#xff0c;Agent方向岗位增多&#xff0c;简历上值钱的东西和去年不一样了&#xff0c;最重要的是别等准备好了再投。文章还详细介绍了四个不容忽视的信号&#xff0c;以及岗位地图、…

作者头像 李华