AlexNet-1
AlexNet网络结构详解
AlexNet 是2012年 ISLVRC ( ImageNet Large Scale Visual Recognition Challenge)竞赛的冠军网络,分类准确率由传统的70%+提升到80%+。它是由Hinton和他的学生Alex Krizhevsky设计的。 也是在那年之后,深度学习开始迅速发展。
注:作者使用了两块GPU,所以网络模型变成上下两块
使用Dropout的方式在网络正向传播过程中随机失活一部分神经元,以减少过拟合Conv1
结构分析
Conv1
注意:原作者实验时用了两块GPU并行计算,上下两组图的结构是一样的。
- 输入:input_size = [224, 224, 3]
- 卷积层:
- kernels = 48 * 2 = 96 组卷积核
- kernel_size = 11
- padding = [1, 2] (左,上围加1列圈0,右下围加2列圈0)
- stride = 4
- 输出:output_size = [55, 55, 96]
Maxpool1
- 输入:input_size = [55, 55, 96]
- 池化层:(只改变尺寸,不改变深度channel)
- kernel_size = 3
- padding = 0
- stride = 2
- 输出:output_size = [27, 27, 96]
经 Maxpool1 后的输出层尺寸为:
Conv2
- 输入:input_size = [27, 27, 96]
- 卷积层:
- kernels = 128 * 2 = 256 组卷积核
- kernel_size = 5
- padding = [2, 2]
- stride = 1
- 输出:output_size = [27, 27, 256]
经 Conv2 卷积后的输出层尺寸为:
Maxpool2
- 输入:input_size = [27, 27, 256]
- 池化层:(只改变尺寸,不改变深度channel)
- kernel_size = 3
- padding = 0
- stride = 2
- 输出:output_size = [13, 13, 256]
经 Maxpool2 后的输出层尺寸为:
Conv3
- 输入:input_size = [13, 13, 256]
- 卷积层:
- kernels = 192* 2 = 384 组卷积核
- kernel_size = 3
- padding = [1, 1]
- stride = 1
- 输出:output_size = [13, 13, 384]
Conv4
- 输入:input_size = [13, 13, 384]
- 卷积层:
- kernels = 192* 2 = 384 组卷积核
- kernel_size = 3
- padding = [1, 1]
- stride = 1
- 输出:output_size = [13, 13, 384]
Conv5
- 输入:input_size = [13, 13, 384]
- 卷积层:
- kernels = 128* 2 = 256 组卷积核
- kernel_size = 3
- padding = [1, 1]
- stride = 1
- 输出:output_size = [13, 13, 256]
Maxpool3
- 输入:input_size = [13, 13, 256]
- 池化层:(只改变尺寸,不改变深度channel)
- kernel_size = 3
- padding = 0
- stride = 2
- 输出:output_size = [6, 6, 256]
FC1、FC2、FC3
Maxpool3 → (66256) → FC1 → 2048 → FC2 → 2048 → FC3 → 1000
最终的1000可以根据数据集的类别数进行修改。
总结
分析可以发现,除 Conv1 外,AlexNet 的其余卷积层都是在改变特征矩阵的深度,而池化层则只改变(减小)其尺寸。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Study-HYK!