问题描述
在训练一个模型的时候,发现十几二十个epochs后模型仍然没有收敛的迹象,如下图所示。
在经过二十个epochs后模型仍旧为收敛,这就出问题了!
解决方案(心路历程)
在此情况发生下,我看了一些网上的解决办法:
【少走弯路系列】总结神经网络训练不收敛或训练失败的原因
虽然这些问题总结的很好,但在我使用其上的一些方法(如调学习率,换不同的激活函数等)后,发现并不能解决问题。
没办法,只能一步一步debug了。
首先第一步是打印模型最后输出的logits(因为是分类模型),发现所有的logit都长一个样!(ps:发现这个的时候,我整个人都是爆炸的>_<)
没办法,只能一步一步的回调了。
调到自己写的一个函数时(果然,屎山都是自己的)
发现这个P_cls都变成了0.05…
然后在试了不同的激活函数sigmoid, relu, softmax后,发现其实都差不多,P_cls在这都变得异常相近了。
然后,我们回到数据new_conv_fea,这是一个经过一些特殊操作后的卷积的特征。于是我打印了这个特征的一些指标:
emmm,真的是一言难尽,难怪logits都一个样。于是我加上了一个batchnorm操作。
终于,模型最后能收敛了!!!
但是效果还没能达到预期,还得再调。>_<
最后,感谢你能看到这!希望各位炼丹师炼丹顺利!