关于tensorflow 2.0 中训练时的对比事项

在使用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合二为一

不是我们喜新厌旧,而是RAdam确实是好用,新的State of the Art优化器RAdam

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

 

 

猜你喜欢

转载自www.cnblogs.com/gengyi/p/11668673.html