Tensorflow LSTM + AdamOptimizer损失突然在GPU上运行

时间:2018-10-06 05:44:27

标签: python tensorflow lstm

LSTM + AdamOptimizer上实现Tensorflow 1.6.时,我遇到一个奇怪的事情。当训练在CPU上运行时,损失是稳定的,但是在Google ML GPU上运行时,损失将从0波动。 xx到100。

即使我尝试以下方法,问题仍然存在:

  1. 将学习率从0.001降低至0.0001
  2. 将亚当epsilon从10e-8增加到0.1

最后,我实现了clip_by_global_norm来限制Adam梯度,最终在Google ML GPU训练中损失变得稳定。

optimizer = tf.train.AdamOptimizer(learning_rate=task.HYPER_PARAMS.learning_rate)
gradients, v = zip(*optimizer.compute_gradients(loss))
gradients, _ = tf.clip_by_global_norm(gradients, 5.0)
train_op = optimizer.apply_gradients(zip(gradients, v), global_step=global_step, name="adam_optimizer")

除了clip_by_global_norm方法之外,有人可以提出更好的解决方案吗?或者可以显示更多在Tensorflow上实现AdamOptimizer的示例

0 个答案:

没有答案