一开始使用的是alexnet模型,最好达到了99.271的成绩。在成绩榜上大概应在20%左右。所以还想继续改进一下模型,一开始想的是使用修改超参数,以及加入随机失活,bn层,应用了数据增强。先说一下超参数的改变:更改过滤器的数量,更改batch_size,应用了学习率退火。
更改过滤器的数量
改动:应用了自己上一个笔记中讲的模型,更改了第一个第二个的卷积层的过滤器数量。
结果:一个epoch的运行时间并没有太大的变化,最初的验证集的准确率有所升高,损失值有下降,但是最后提交的准确率也没有太大的变化。
更改batch_size
改动:将batch_size从200降到了100。
结果:一个epoch的运行时间快了一点。验证集的准确率最后提升了一点,但提交后的成绩反而下降了,可能是减少的batch_size不能更好的模拟完整的训练集。
使用学习率退火
一开始的学习率可能在起始时表现的很好,但在训练一段时间过后,可能一直达不到最优值,这时候就可以减少学习率来慢慢达到最优值。
改动:
learning_rate_reduction = ReduceLROnPlateau(monitor='val_loss',
patience=3,
verbose=1,
factor=0.5,
min_lr=0.00001)
监督的值,过几个回合,乘以0.5,最小的学习率(keras中文文档)
model.fit(train_images, train_labels, validation_data=(validation_images, validation_labels), epochs=60, batch_size=100, verbose=2,callbacks=[learning_rate_reduction])