CIFAR-10에서 학습 할 깊은 모델이 있습니다. 교육은 CPU와 잘 작동합니다. 그러나 GPU 지원을 사용하면 일부 배치의 그라디언트가 NaN (나는 tf.check_numerics
을 사용하여 검사했습니다)이 발생하지만 임의로 발생하지만 충분히 빠릅니다. 문제는 내 GPU와 관련이 있다고 생각합니다.Tensorflow : 그라디언트가 Nan 인 경우 업데이트하지 마십시오
내 질문은 : 그라디언트 중 하나 이상에 NaN이 있고 다음 배치로 진행하도록 강제로 업데이트하지 않을 것입니까?
편집 : 아마도 내 문제에 대해 자세히 설명해야합니다. 내가 할 수있는 낭은 (검사 실패)가있는 경우, 다음, 나는 그라데이션에 낭가 있는지 확인 먼저 tf.check_numerics
를 사용하는 생각
with tf.control_dependencies([tf.check_numerics(grad, message='Gradient %s check failed, possible NaNs' % var.name) for grad, var in grads]):
# Apply the gradients to adjust the shared variables.
apply_gradient_op = opt.apply_gradients(grads, global_step=global_step)
및 :
이 내가 그라디언트를 적용하는 방법입니다 opt.apply_gradients
을 사용하지 않고 "통과"하십시오. 그러나 tf.control_dependencies
으로 오류를 잡을 수있는 방법이 있습니까?