我正在使用 tensorflow 编写简单的神经网络进行一些研究,并且在训练时遇到了很多关于“nan”权重的问题。我尝试了许多不同的解决方案,例如更改优化器、更改损失、数据大小等,但无济于事。最后,我注意到学习率的变化使我的权重产生了令人难以置信的差异。
使用 0.001 的学习率(我认为这是相当保守的),最小化函数实际上会成倍地增加损失。在一个时期之后,损失可能会从数千跳到一万亿,然后到无穷大(“nan”)。当我将学习率降低到 0.0001 时,一切正常。
1)为什么一个数量级会有这样的效果?
2) 为什么最小化函数从字面上执行与其功能相反的功能并使损失最大化?在我看来,这不应该发生,无论学习率如何。