在Tensorflow中使用Adam Optimizer突然增加损失

时间:2017-02-14 08:40:02

标签: tensorflow neural-network regression conv-neural-network

我正在使用CNN进行回归任务。我使用Tensorflow,优化器是Adam。网络似乎完全收敛,直到损失突然增加以及验证错误的一点。以下是标签的损失图和分离的权重(优化器在它们的总和上运行) label loss weight loss

我使用l2损失进行重量正规化以及标签。我对训练数据应用了一些随机性。我目前正在尝试使用RSMProp查看行为是否发生变化,但重现错误需要至少8小时。

我想了解这是怎么发生的。希望你能帮帮我。

1 个答案:

答案 0 :(得分:9)

我过去几个月的经历如下: Adam非常容易使用,因为你不必非常熟悉初始学习率,而且它几乎总能奏效。然而,当谈到收敛时,亚当并没有真正满足于解决方案,而是在更高的迭代次数中摇摆不定。虽然SGD给出了几乎完美形状的损失图,并且似乎在更高的迭代中收敛得更好。 但是改变设置的litte部分需要调整SGD参数,否则你将最终得到NaN ...对于体系结构和一般方法的实验我赞成Adam,但是如果你想获得一个所选体系结构的最佳版本你应该使用SGD并至少比较解决方案。

我还注意到一个好的初始SGD设置(学习速率,重量衰减等)收敛速度和使用Adam一样快,我的设置很简单。 希望这对你们中的一些人有所帮助!

编辑:请注意,即使有亚当,我在初始问题中的效果也是正常。好像我有一个错误,但我真的不记得那里的问题。