- 检查输入数据是否正常。是否有异常数据(全部是零,gt不对)
- 是否归一化数据
- 与预训练模型原来的输入标准是否一致。
- 数据预处理是否正确
- 简单化自己的问题。
- 检查自己的损失函数
- 检查损失的输入
- 检查自定义的网络层
- 检查冻结层的设置
- 检查维度信息是否匹配
- 梯度回传检查
- 检查模型初始化参数
- 超参数的设置是否合理
- 减少正则化
- 训练模式和测试模式的相互转换
- 可视化 (权重,激活函数,权重直方图,层的更新)
- 使用不同的优化器
- 梯度爆炸和梯度消失(查看梯度的值)
- 调节学习率的大小(和权重应该是数量级的差异,权重0.1,学习率0.001)
- NaN值(降低学习率,观察是否有除以0/small的操作,检查NaN出现的第一个位置,调整激活函数)
reference
M:37 Reasons why your Neural Network is not working
What is the “dying ReLU” problem in neural networks?
模型训练时loss不收敛、不下降原因和解决办法