对mnist识别中过拟合的处理

参考:https://www.jianshu.com/p/86051c14d434

1.出现了过拟合现象,在epoch=30的情况下:

损失loss:

精度acc:

所以根据上述图像选择epoch=5得到结果,提交到kaggle上,获得分数0.98414。

1.尝试加入dropout层

model.add(Flatten())
model.add(Dropout(0.5))

在flatten之后,

损失loss:

可以比较明显地看出,良好地解决了过拟合的问题,(至于在16epoch的时候为什么损失突然升高,不明白。)

 精度acc:

这次结果提交分数为0.98671。

2.调参? 

没有调整学习率,尝试对batch_size调整。

根据第三小节的实验,发现使用adam+dropout效果最好。所以将其作为基线,对模型调参batch_size。

将batch_size由32改为128,其他均选择最优结果。 

 loss:

精度:

提交到kaggle的结果为:0.99057,为什么和32一样?接着尝试一下batch_size=64

看起来效果不错,提交到kaggle评分为:0.98942,结果没有那么好。

3.使用其他的优化方法

初始使用的是rmsprop;

sgd:(加dropout)

loss

//相较于rmsprop更平滑。

 acc:

但是效果看起来没有rms好,提交之后的结果

对sgd也去掉dropout之后,也出现了过拟合:

adam:(dropout)

发现是有过拟合的趋势的。

 

看精度,也获得了和rsm相似的很好的效果。

将本次结果提交,kaggle评分为0.99057。又有了新的提升。 

原文地址:https://www.cnblogs.com/BlueBlueSea/p/11067521.html