单批次训练数据为batch_size=100
不加隐藏层,直接输入层到输出层,测试集准确率为87%
添加复杂隐藏层两层(2000个神经元、1000个神经元)进行训练,不加dropout,训练三十一次(写本文档时,才跑到第6次,测试集准确率96%,训练集准确率99%,有过拟合现象)
将dropout分别设置成0.6和0.7,前者在第十二次训练后, 训练准确率92.79%,测试准确率92.81%,基本没有过拟合
后者第十二次训练后,训练准确率94.69%,测试准确率94.19&,也基本没有过拟合。但是准确度提高了2%(dropout只是0.1的差别)。
尝试不同优化器eg:AdamOptimizier,学习率从GradientDescent的0.1改为0.01,训练速度加快非常多(尝试过学习率不变,准确度非常低)。
在不同的优化器里,SGD,Momentunm、NAG、Adagrad、Adadelta、Rmsprop中,SGD速度最慢,而且无法逃离鞍点。其余的(Adadelta速度最快)速度都很快,皆可逃离鞍点。
经验总结,训练速度越快的优化器,它的学习率应该设置0.01以下,防止准确率过低。
以下是部分数据展示:
#####AdamOptimizer学习率0.003:
第9次训练准确率为:0.943836测试准确率为:0.9431
第24次训练准确率为:0.944873测试准确率为:0.942
#####AdadeltaOptimizer学习率0.003:
第9次训练准确率为:0.292891测试准确率为:0.298
第24次训练准确率为:0.416909测试准确率为:0.4223
#####AdadeltaOptimizer学习率0.007:
第9次训练准确率为:0.492691测试准确率为:0.5001
第24次训练准确率为:0.629491测试准确率为:0.63
#####AdadeltaOptimizer学习率0.01:
第9次训练准确率为:0.503545测试准确率为:0.5063
第24次训练准确率为:0.669727测试准确率为:0.6771
#####AdadeltaOptimizer学习率0.03:
第9次训练准确率为:0.713036测试准确率为:0.7188
第24次训练准确率为:0.835491测试准确率为:0.8338
#####AdagradOptimizer学习率0.003:
第9次训练准确率为:0.699273测试准确率为:0.7036
第24次训练准确率为:0.851836测试准确率为:0.8558
#####AdagradOptimizer学习率0.03:
第9次训练准确率为:0.911345测试准确率为:0.9146
第24次训练准确率为:0.932255测试准确率为:0.9317
#####MomentumOptimizer学习率0.003 动力0.9:
第9次训练准确率为:0.864345测试准确率为:0.867
第24次训练准确率为:0.904455测试准确率为:0.9055