[Converge] Regularizaton Loss

Clone Loss

TensorFlow目标检测API中这些损失(loss)代表含义是什么

Losses/clone_loss:

仅在多个GPU上训练时才有意义,TensorFlow将创建模型的克隆以在每个GPU上训练并报告每个克隆的损失。如果您在单个GPU / CPU上训练模型,那么您将看到clone_lossTotalLoss相同。

 

 

Regularizaton Loss

这个指标比较神奇,且好用。

regularization_loss 的作用是不让某一权很大,并调节其他权值,使得所有权值都相差在一定范围,使得各个神经元都能充分使用(个人观点)。

 

但是,对于“accuracy不上升,loss不下降”现象依旧是存在。这时候我就想呀,要想accuracy,loss变化(哪怕是变坏也好呀,总比基本不变强)

那weight 肯定变化呀,我就把regularization_loss给打印出来,发现regularization_loss,也不变化,这样说明我的算法存粹是在局部极小值那边

转悠,还亏我傻呆呆地看accuracy,loss log,还傻逼地调小learning_rate(regularization_loss变化都很小,说明learning_rat太小啦),

 

 

  • 结论

开始训练时,为了迅速提高 accurcy,权重收敛不平衡,有点"急公近利" 的感觉;

达到一定程度后,"急公近利" 带来的好处是不能长久的,所以开始慢慢下降,也就是倾向于各个参数更能够充分地被利用到。这样,便提高了“模型潜能”,就能继续收敛下去。

为了防止处于最小极致点,若下一次training,提高lr以及batch size后,仍然不会有更好的效果,那么模型的这次训练性能也就这样了。

 

 

  • 一个漂亮的训练轨迹

希望reg loss能接近高斯分布,可能起初的batch size需要再大一些,比如要接近label number。

 

 End. 

posted @ 2021-08-18 08:54  郝壹贰叁  阅读(369)  评论(0)    收藏  举报