keras 训练是 各种loss 变化情况

在使用keras 训练网络时,虽然网络设计好了,数据也加载进去了,但是发现训练时候总是出现各种各种稀奇古怪的问题。我在这里就列举几个常见的问题。供大家参考一下。当val_loss曲线或val_acc曲线震荡不平滑时的原因可能如下:

1 学习率可能太大

2 batch size太小

3 样本分布不均匀

4 缺少加入正则化

大家可以在这几个方面去进行调整,一步一步的调整,先调整学习率,然后再调整batch size,一般这两种情况比较多,很容易就可以解决。如果还不行,再考虑一下val 集的数据样本和训练集的样本是不是同样的分布。从这几方面进行考虑。

另外大家要学会从loss和acc的变化来判断网络学习的情况。可能的几种情况如下。

  1. train loss 不断下降,test loss不断下降,说明网络仍在学习;
  2. train loss 不断下降,test loss趋于不变,说明网络过拟合;
  3. train loss 趋于不变,test loss不断下降,说明数据集100%有问题;
  4. train loss 趋于不变,test loss趋于不变,说明学习遇到瓶颈,需要减小学习率或批量数目;
  5. train loss 不断上升,test loss不断上升,说明网络结构设计不当,训练超参数设置不当,数据集经过清洗等问题。 

另外当训练时出现NAN 时大家看看自己的网络是不是设计的有问题,网络设计的是否过大了,导致梯度传递时丢失了。

发布了88 篇原创文章 · 获赞 55 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/nijiayan123/article/details/102504035
今日推荐