AlexNet网络结构
网络包含8个带权重的层;前5层是卷积层,剩下的3层是全连接层。最后一层全连接层的输出是1000维softmax的输入,softmax会产生1000类标签的分布网络包含8个带权重的层;前5层是卷积层,剩下的3层是全连接层。最后一层全连接层的输出是1000维softmax的输入,softmax会产生1000类标签的分布。
●输入层
输入为224x224x3的三通道RGB图像,为方便后续计算,实际操作中通过padding做预处理,把图像变成227x227x3。
●卷积层C1
该层的处理流程是: 卷积-->ReLU-->池化-->归一化。
-
- 卷积,输入是227×227×3,使用96个11×11×3的卷积核在stride=4的情况下,得到的FeatureMap为55×55×96,其中55=(227-11)/4+ 1。
- ReLU,将卷积层输出的FeatureMap输入到ReLU函数中。
- 池化,使用3×3步长为2的池化单元(重叠池化,步长小于池化单元的宽度),输出为27×27×96,其中27=(55−3)/2+1。
- 局部响应归一化,局部响应归一化 ,使用 k=2, n=5, $\alpha=10^{-4}, \beta=0.75$ 进行局部归一化,输出的仍然为 27×27×96, 输出分为两组, 每组的大小为 27×27×48。
●卷积层C2
该层的处理流程是:卷积-->ReLU-->池化-->归一化
-
- 卷积,输入是2组27×27×48。使用2组,每组128个尺寸为5×5×48的卷积核,并作了边缘填充padding=2,卷积的步长为1. 则输出的FeatureMap为2组,每组的大小为27×27×128,其中27=(27+2∗2−5)/1+1。
- ReLU,将卷积层输出的FeatureMap输入到ReLU函数中.
- 池化运算的尺寸为3×3,步长为2,池化后图像的尺寸为(27−3)/2+1=13(27−3)/2+1=13,输出为13×13×256。
- 局部响应归一化,局部响应归一化 ,使用 k=2, n=5, $\alpha=10^{-4}, \beta=0.75$ 进行局部归一化,输出的仍然为 13×13×256, 输出分为两组, 每组的大小为 13×13×128。
●卷积层C3
该层的处理流程是: 卷积-->ReLU
-
- 卷积,输入是2组13×13×128,使用2组,每组192个尺寸为3×3×128的卷积核,做了边缘填充padding=1,卷积的步长为1.则输出的FeatureMap为13×13×384, 输出分为两组, 每组的大小为13×13×192。
- ReLU,将卷积层输出的FeatureMap输入到ReLU函数中。
●卷积层C4
该层的处理流程是: 卷积-->ReLU
-
- 卷积,输入是13×13×384,分为两组,每组为13×13×192.使用2组,每组192个尺寸为3×3×192的卷积核,做了边缘填充padding=1,卷积的步长为1.则输出的FeatureMap为13×13×384,分为两组,每组为13×13×192。
- ReLU,将卷积层输出的FeatureMap输入到ReLU函数中。
●卷积层C5
该层处理流程为:卷积-->ReLU-->池化
-
- 卷积,输入为13×13×384,分为两组,每组为13×13×192。使用2组,每组为128尺寸为3×3×192的卷积核,做了边缘填充padding=1,卷积的步长为1.则输出的FeatureMap为13×13×256, 输出分为两组, 每组的大小为13×13×128。
- ReLU,将卷积层输出的FeatureMap输入到ReLU函数中。
- 池化,池化运算的尺寸为3×3,步长为2,池化后图像的尺寸为 (13−3)/2+1=6,即池化后的输出为6×6×256。
- 卷积,输入为13×13×384,分为两组,每组为13×13×192。使用2组,每组为128尺寸为3×3×192的卷积核,做了边缘填充padding=1,卷积的步长为1.则输出的FeatureMap为13×13×256, 输出分为两组, 每组的大小为13×13×128。
●全连接层FC6
该层的流程为:(卷积)全连接 -->ReLU -->Dropout
-
- 卷积->全连接: 输入为6×6×256,该层有4096个卷积核,每个卷积核的大小为6×6×256。由于卷积核的尺寸刚好与待处理特征图(输入)的尺寸相同,即卷积核中的每个系数只与特征图(输入)尺寸的一个像素值相乘,一一对应,因此,该层被称为全连接层。由于卷积核与特征图的尺寸相同,卷积运算后只有一个值,因此,卷积后的像素层尺寸为4096×1×1,即有4096个神经元。
- ReLU,这4096个运算结果通过ReLU激活函数生成4096个值。
- Dropout,抑制过拟合,随机的断开某些神经元的连接或者是不激活某些神经元。
●全连接层FC7
流程为:全连接-->ReLU-->Dropout
-
- 全连接,输入为4096的向量。
- ReLU,这4096个运算结果通过ReLU激活函数生成4096个值。
- Dropout,抑制过拟合,随机的断开某些神经元的连接或者是不激活某些神经元。
●输出层
-
- 第七层输出的4096个数据与第八层的1000个神经元进行全连接,经过训练后输出1000个float型的值,这就是预测结果。
AlexNet参数数量
卷积层的参数 = 卷积核的数量 * 卷积核 + 偏置
- C1: 96个11×11×311×11×3的卷积核,96×11×11×3+96=34848
- C2: 2组,每组128个5×5×485×5×48的卷积核,(128×5×5×48+128)×2=307456
- C3: 384个3×3×2563×3×256的卷积核,3×3×256×384+384=885120
- C4: 2组,每组192个3×3×1923×3×192的卷积核,(3×3×192×192+192)×2=663936
- C5: 2组,每组128个3×3×1923×3×192的卷积核,(3×3×192×128+128)×2=442624
- FC6: 4096个6×6×2566×6×256的卷积核,6×6×256×4096+4096=37752832
- FC7: 4096∗4096+4096=16781312
- output: 4096∗1000=4096000