改变keras模型参数来提高kaggle手写体数字识别

本文探讨了在Kaggle手写数字识别任务中如何通过调整Keras模型参数提高性能。尝试了更改过滤器数量、batch_size、使用学习率退火、更改网络结构(如引入BN层、dropout和数据增强)。实验结果显示,更深的网络结构、BN层和dropout显著提升了模型的准确率,数据增强进一步增强了模型的泛化能力,而学习率退火有助于寻找最优解。然而,不合适的batch_size可能导致性能下降。
摘要由CSDN通过智能技术生成

一开始使用的是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])
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值