用 TF 训练 CNN 时 loss 一直乱跳可能有哪些情况

像图里这种乱跳的可能会是哪些情况呢,虽然迭代次数还比较少,但是没太看出有收敛的迹象,还有精度也是跳来跳去的:

image


提问人:Future,2018-5-4 23:58:37

感觉可能性有点儿多,楼主如果不方便分享代码,希望至少多上点儿信息吧。比如特征和目标数据的取值范围、优化器、学习率等等。


yunhai_luo,2018-5-5 01:44

尝试一下修改 learn_rate 吧,改小点试试


pjincz,发表于 2018-5-6 21:38:32

你用的是 sgd 吗?lr 多少?


jellycsc,发表于 2018-5-7 00:41:59

学习率太大,也就是步子迈的太大,在最后收敛的时候一直在最低谷周围徘徊。


M 丶 Sulayman ,发表于 2018-5-7 13:02:47

不收敛的话,代码没问题的话,考虑下学习率吧。


ooon ,发表于 2018-5-7 13:46:34

可能的情况:学习率过大
还有一种可能是用验证数据既做验证又做测试;或者验证数据与测试数据存在交叉。


tking,发表于 2018-5-9 20:41:29

要从训练模型,loss 函数等多方面分析的,你这样单一维度谁知道在干什么。


正觉(朔),发表于 2018-5-11 23:11:25

看你的 x 轴 (0–2000),还是刚刚开始训练。

一开始的模型是随机初始化的,loss 看似随机是正常的。观察趋势还是下降的,应该设定更大的训练 steps。观察更长的周期。不用太着急哈!


TianLin,发表于 2018-5-20 12:25:14

  1. learning rate 过大导致学习震荡:改小学习率试试,为了立竿见影,可用直接降低 50 倍
  2. batch size 过小,导致噪声严重:改大批次试试
  3. loss 函数不对:可以试试交叉熵等相对比较平滑的 loss 函数(之前我自己写的一些 loss 函数也有这种震荡问题,改为 cross entropy 就好了)

winter,发表于 2018-5-25 11:41:33

可能是学习率太大了。

learn_rate 太高导致梯度下降不收敛?


zhanys_7,发表于 2018-7-3 18:32:04

其实可以看出来你的趋势是在收敛的,只不过收敛的会慢一点,如果你考虑增加 epoch ,你就能看出区别了。

但是还是强烈推荐对于图像这种较大的一个 batch 一定要 normalize 或者归一化


ViolinSolo,发表于 2018-7-3 19:54:03