训练深度神经网络时准确性突然下降
Sudden drop in accuracy while training a deep neural net
我正在使用 mxnet 训练 11-class 图像 classifier。我观察到一个奇怪的行为训练准确率缓慢增加并上升到 39%,在下一个时期下降到 9%,然后在剩余的训练中保持接近 9%。
我用保存的模型(训练准确率 39%)重新开始训练,保持所有其他参数不变。现在训练准确率再次提高。这可能是什么原因?我无法理解。以这种方式训练模型变得越来越困难,因为它需要我不断查看训练精度值。
学习率恒定为 0.01
如您所见,您的后期准确度接近于随机准确度。在这种情况下有 2 个常见问题。
- 你的学习率很高。尝试降低它
- 您尝试使用的错误(或熵)为您提供了 NaN 值。如果您尝试将熵与对数函数一起使用,则必须精确使用它们。
这可能是因为 0log0 returns NaN。
您可以通过以下方式避免它;
cross_entropy = -tf.reduce_sum(labels*tf.log(tf.clip_by_value(logits,1e-10,1.0)))
在训练神经网络的过程中,准确率先提高一段时间后变差的现象很常见——一般来说这是过拟合造成的。网络 "get unlucky" 并被撞到参数的错误部分 space 也很常见,这对应于准确度的突然下降——有时它可以很快从中恢复,但有时不能。
一般来说,降低学习率是解决此类问题的好方法。此外,设置像 FactorScheduler 这样的学习率计划可以通过每隔几个 epoch 降低学习率来帮助您实现更稳定的收敛。事实上,这有时可以掩盖选择过高初始学习率的错误。
我遇到了同样的问题 problem.And 我通过使用 (y-a)^a 损失函数而不是交叉熵函数解决了它(因为 log(0))。我希望有更好的解决方案问题。
这些问题经常出现。我观察到这可能是由于以下原因之一造成的:
- 返回 NaN 的东西
- 网络的输入不符合预期 - 许多现代框架在某些此类情况下不会引发错误
- 模型图层在某些时候会出现不兼容的形状
我正在使用 mxnet 训练 11-class 图像 classifier。我观察到一个奇怪的行为训练准确率缓慢增加并上升到 39%,在下一个时期下降到 9%,然后在剩余的训练中保持接近 9%。 我用保存的模型(训练准确率 39%)重新开始训练,保持所有其他参数不变。现在训练准确率再次提高。这可能是什么原因?我无法理解。以这种方式训练模型变得越来越困难,因为它需要我不断查看训练精度值。
学习率恒定为 0.01
如您所见,您的后期准确度接近于随机准确度。在这种情况下有 2 个常见问题。
- 你的学习率很高。尝试降低它
- 您尝试使用的错误(或熵)为您提供了 NaN 值。如果您尝试将熵与对数函数一起使用,则必须精确使用它们。
这可能是因为 0log0 returns NaN。
您可以通过以下方式避免它;
cross_entropy = -tf.reduce_sum(labels*tf.log(tf.clip_by_value(logits,1e-10,1.0)))
在训练神经网络的过程中,准确率先提高一段时间后变差的现象很常见——一般来说这是过拟合造成的。网络 "get unlucky" 并被撞到参数的错误部分 space 也很常见,这对应于准确度的突然下降——有时它可以很快从中恢复,但有时不能。
一般来说,降低学习率是解决此类问题的好方法。此外,设置像 FactorScheduler 这样的学习率计划可以通过每隔几个 epoch 降低学习率来帮助您实现更稳定的收敛。事实上,这有时可以掩盖选择过高初始学习率的错误。
我遇到了同样的问题 problem.And 我通过使用 (y-a)^a 损失函数而不是交叉熵函数解决了它(因为 log(0))。我希望有更好的解决方案问题。
这些问题经常出现。我观察到这可能是由于以下原因之一造成的:
- 返回 NaN 的东西
- 网络的输入不符合预期 - 许多现代框架在某些此类情况下不会引发错误
- 模型图层在某些时候会出现不兼容的形状