在使用cifar10 训练中,对比修改某些参数对训练结果的影响
1 框架的修改的基本逻辑
1.1 训练的背景
1) 训练环境:python 3.6 + tensorflow 2.0
2)训练数据:cifar10
3)训练数据分类:train 32000 + val 8000 + test 10000
1.2 改变的逻辑
以下逻辑只是自我感觉,没有找到相关论文,降低 loss 方向又不知道怎么修改,朝那个方向修改更好,只得慢慢调整,积累一些规律,当然了,这些规律在以后的实践中有可能是“阶段性正确”。
关于训练前那些暂不修改事项
1) - 在学习优化器时,看好多视频资料、文档资料、博文等对 adam 优化器评价较高,或者基于 adam 的改良版 RAdam 。
比如在 “ Adam优化器如何选择 ”一文中讲述的非常不错。可以参考。
关于改良版:要得到最强的优化器,只需要把RAdam和LookAhead合二为一
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
)
2) - 选择激活函数的选择,在此选择relu,因为这是公认的好激活函数,或者采用它的升级版 LeakyReLU 。
在tensorflow 2.0 中使用 relu 和 LeakyReLU 介绍了使用方法。但是没有更多的理论介绍(理论的内容网上堆成山)。
3) - 选用 100 个 epoch + 自动终止,实验证明,一般不到100个epoch就会自动终止。
4) - 相对上面不动的内容,下面改变其他内容。
2 relu vs LeakyReLU
2.1 结果数据化
名称 | relu | LeakyReLU | 备注 | |
epoch | 18 | 17 | 差别不大 | |
train_set |
loss | 0.3005 | 0.1893♠ | LeakyReLU好 |
accuracy | 0.8917 | 0.9336♠ | LeakyReLU好 | |
val_set |
val_loss | 1.3521♠ | 1.5921 | relu较好 |
val_accuracy | 0.6705♠ | 0.6759 | 差别不大 | |
test_set | test_loss | 1.3466♠ | 1.6643 | relu较好 |
test_acc | 0.6723♠ | 0.6634 | 差别不大 |
结论:
1 - LeakyReLU 较好,可以使用 LeakyReLU 作为激活函数 。
2 - 对数据进行增强处理,以降低可能出现的过拟合现象
3 - 缺了一项?时间忘了添加进去。
保存名称(便于后续查询使用)
relu:model_point2019.10.14.23.23.56.h5
LeakyReLU:model_point2019.10.14.22.47.40.h5
2.2 结果可视化
2.3 模型可视化
2.4 替换代码段
# 第一层卷积 model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3))) # model.add(layers.Conv2D(32, (3, 3), input_shape=(32, 32, 3))) # model.add(layers.LeakyReLU(0.01))
3 batch_size 大小
feed 给模型的 batch_size 大小不一样,其结果也存在有差异
组别 | 16 | 64 | 256 | 512 | 1024 | PK | ||||||||
细目 | 16-A | 16-B | 16-C | 均值 | 64-A | 64-B | 64-C | 256-A | 256-B | 256-C | ||||
epoch | 16 | 13 | 14 | 4.3 | 18 | 17 | 18 | 29 | 30 | 28 | ||||
train_set |
loss | 0.1854 | 0.2348 | 0.2387 | 0.2361 | 0.2834 | 0.2442 | 0.3541 | 0.3747 | 0.4420 | ||||
accuracy | 0.9345 | 0.9160 | 0.9154 | 0.9161 | 0.9008 | 0.9144 | 0.8776 | 0.8707 | 0.8467 | |||||
val_set |
val_loss | 1.8339 | 1.6358 | 1.5866 | 1.3731 | 1.2901 | 1.3429 | 1.0990 | 1.0724 | 0.9405 | ||||
val_accuracy | 0.6587 | 0.6697 | 0.6536 | 0.6754 | 0.6798 | 0.6811 | 0.6874 | 0.6858 | 0.7064 | |||||
时间 | 9s291us | 10s306us | 10s310us | 4s114us | 4s109us | 4s111us | 2s70us | 2s69us | 2s68us | |||||
test_set | test_loss | |||||||||||||
test_acc | ||||||||||||||
时间 |
保存模型备注:
16-A model_point2019.10.15.00.18.11.h5
16-B model_point2019.10.15.00.22.22.h5
16-C model_point2019.10.15.00.30.50.h5
64-A model_point2019.10.15.00.35.56.h5
64-B model_point2019.10.15.00.38.41.h5
64-C model_point2019.10.15.00.41.05.h5
256-A model_point2019.10.15.00.45.30.h5
256-B model_point2019.10.15.00.49.30.h5
256-C model_point2019.10.15.00.52.47.h5