1、train loss 和 test loss 的关系
- train loss 不断下降,test loss不断下降:说明网络仍在学习;
- train loss 不断下降,test loss趋于不变:说明网络过拟合;
- train loss 趋于不变,test loss不断下降:说明数据集100%有问题;
- train loss 趋于不变,test loss趋于不变:说明学习遇到瓶颈,需要减小学习率或批量数目;或者是数据集有问题(数据集标注错误数据比较多)
- train loss 不断上升,test loss不断上升:说明网络结构设计不当,训练超参数设置不当,数据集经过清洗等问题。
2、训练时损失出现nan的问题,可能导致梯度出现nan的三个原因:
- 梯度爆炸。也就是说梯度数值超出范围变成nan. 通常可以调小学习率、加BN层或者做梯度裁剪来试试看有没有解决。
- 损失函数或者网络设计。比方说,出现了除0,或者出现一些边界情况导致函数不可导,比方说log(0)、sqrt(0).
- 脏数据。可以事先对输入数据进行判断看看是否存在nan.