Alexnet作为经典网络,值得深度学习。通过实验,(1)尽可能的加深对paper一些创新点理解。AlexNet谜一般的input是224*224,实际上应该是227*227。在实验中,我采用的是cifar10,输入是32*32。所以将网络参数同比简化。(2)尽可能理解不同训练方法带来的区别。
数据集:http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz
训练用的代码: https://github.com/diudiuzhi/TensorAlexnet
python train.py
Alexnet特点:
- 1 引入relu
- 2 GPU并行计算
- 3 LRN
- 4 Overlapping Pooling
- 5 引入Dropout
- 6 Data Augmentation
第一点,不验证,之后的网络都是使用relu。MSRAnet提出的Prelu也是为了解决relu负域梯度0的问题。
第二点,不验证,Alex当时单块GPU内存3Gb,不足以训练网络,于是采用两块GPU并行。另外他的架构中存在网络不对称性。并宣称这一点对他结果有贡献。
第三点,实验验证:带LRN和不带LRN训练结果差距,时间开销。后续论文评价LRN,对结果并没有特别的贡献,但是极费时间。
第四点,不验证。
第五点,dropout用于防止过拟合,在这里测试不同的 dropout对结果和时间的影响。
第六点,测试数据增强对网络的影响。
本篇博客将从以下几点实验:
1)验证不同学习率对网络的影响。
2) 验证不同的优化器对网络的影响。
3)验证LRN对网络的影响。
4)验证dropout对网络的影响。
5)验证不同初始化方式对网络的影响。(MSRA提出)
6)验证数据增强对网络的影响。
网络基础结构:
Input: 32*32*3
Padding: SAME
kernel: 3*3
stride: 1
Conv1:
channel: 24
lrn