AlexNet(详解)——从原理到 PyTorch 实现(含训练示例)
1. 发展历史与比赛成绩
- 作者 / 时间:Alex Krizhevsky, Ilya Sutskever, Geoffrey Hinton,发表于 NIPS 2012(论文标题 ImageNet Classification with Deep Convolutional Neural Networks)。这是 AlexNet 的权威来源。
- 比赛成绩:AlexNet 在 ILSVRC-2012 上获得显著胜出 —— top-5 错误率约 15.3%,相较第二名有非常大的优势。这次胜利推动了深度卷积网络在计算机视觉领域的广泛应用。
2. AlexNet 的核心思想(一句话)
把较深的卷积网络(比当时常见的浅网络更深)、非饱和激活(ReLU)、大量数据(ImageNet)和 GPU 加速结合起来:通过 局部感受野 + 权值共享 + 下采样(池化) 学习层次化特征,并用若干技巧(ReLU、数据增强、Dropout、局部响应归一化等)防止过拟合与加速训练,从而在大型图像分类任务上取得突破。
3. 模型结构总览(概览表)
说明:不同实现(paper vs Caffe vs torchvision)在输入尺寸/补零细节上略有差异,常见将输入视为
227×227×3或224×224×3。下表以常见重现(Caffe/多数教程)为例,输出大小基于227×227(或对224×224做微调后也可得到相同的中间尺寸)。使用AdaptiveAvgPool2d((6,6))可以避免输入尺寸差异导致的维度问题(后面代码中已采用)。本文中参数量计算以常见复现(final flatten = 256×6×6)为基准。
| 层号 | 层类型 | kernel / stride / pad | 输出通道 | 输出尺度(示例) | 备注 |
|---|---|---|---|---|---|
| 输入 | — | — | 3 | 227×227×3(或 224×224×3) | 先做 scale → crop |
| Conv1 | Conv 11×11, s=4, p=2 | 11×11 / 4 / 2 | 96 | 55×55×96 | ReLU → LRN → MaxPool(3,2) |
| Pool1 | MaxPool 3×3, s=2 | — | — | 27×27×96 | — |
| Conv2 | Conv 5×5, s=1, p=2, groups=2 | 5×5 / 1 / 2 | 256 | 27×27×256 | ReLU → LRN → Pool |
| Pool2 | MaxPool 3×3, s=2 | — | — | 13×13×256 | — |
| Conv3 | Conv 3×3, s=1, p=1 | 3×3 / 1 / 1 | 384 | 13×13×384 | ReLU |
| Conv4 | Conv 3×3, s=1, p=1, groups=2 | 3×3 / 1 / 1 | 384 | 13×13×384 | ReLU |


