VGG + NiN + GoogLeNet

发布时间:2026/7/28 17:16:57
VGG + NiN + GoogLeNet VGGAlexNet 通过增加网络深度和参数量显著提升了精度自然的问题继续堆叠层数能否进一步提升更多全连接层太贵全连接层参数量巨大计算成本高不是好选择更多卷积层卷积层参数量相对可控是可行的方向将卷积层组合成块VGG 的核心创新用重复的卷积块来构建深层网络是更大更深的 AlexNet关键创新是重复的 VGG 块结构VGG块[3×3 Conv → ReLU] × N → 2×2 MaxPool (stride2)具体的实现定义一个VGG块num_convs卷积层数量in_channelsout_channels输入输出特征图通道数定义一个数组(num_convs, out_channels)代表块的参数一共有五种块conv_blks存放卷积块遍历conv_arch依次创建卷积块放入conv_blks数组in_channels out_channels下一块的输入通道 当前块的输出通道后面再跟上全连接层NiN如果使用了全连接层可能会完全放弃表征的空间结构。 网络中的网络NiN提供了一个非常简单的解决方案在每个像素的通道上分别使用多层感知机问题在 VGG 中卷积层输出是 4D 张量 [B, C, H, W]但全连接层需要 2D 张量 [B, Features]所以必须 Flatten拉平[B, 512, 7, 7] ──Flatten──► [B, 25088] ──FC──► [B, 4096]一旦拉平空间结构就丢了而且参数量爆炸25088×4096 102M。特点1.无全链接层2.交替使用NiN块和步幅为2的最大池化层逐步减小高宽和增大通道数3.最后使用全局平均池化层得到输出输入通道是类别数用 1×1 卷积实现逐像素全连接用全局平均池化替代最后的 Flatten 大 FC 层。这样既保留了空间结构又彻底解决了全连接层的参数爆炸问题。*图像数据的张量格式是4D[B, C, H, W]Batch批量大小一次处理几张图片Channel通道数每张图有几个特征通道卷积层提取特征全连接层负责整合信息做决策具体的实现NiN块的实现NiN模型实现*整体流程[B, C, H, W]B个批次独立输出通道数由相应层的核的数量决定不断增加输出通道数增加卷积核数量用更多通道存储不同类型的高级特征最后用10个通道数的输出作为10个类别的分类平均池化层的核size和输入size一样输出为输入的一个平均值当作分类评估GoogleNetInception 块的设计哲学是与其纠结用哪种卷积核3×3 还是 5×5不如全部并行使用让网络自己学习哪种特征提取方式最有效。Inception块不改变维度只改变通道数Inception 块的效率参数少秘诀1×1 瓶颈降维减少通道数GoogLeNet一共使用9个Inception块和全局平均汇聚层的堆叠来生成其估计值。Inception块之间的最大汇聚层可降低维度。 第一个模块类似于AlexNet和LeNetInception块的组合从VGG继承全局平均汇聚层避免了在最后使用全连接层。Stage345通道数大幅度增加具体的实现相对复杂了解即可p1p2p3p4代表Inception块的四条路经Forward函数四条路经均要计算每一个Stage的实现依次添加Stage1:第一个模块使用64个通道7*7的卷积层。Stage3第三个模块串联两个完整的Inception块....