Tümü,Güncelleştirme sırasında Tensorflow'daki geçişlerde NaN nasıl kontrol edilir?
Büyük miktarda örnek içeren büyük bir model eğitirken, bazı parametreler, parametre güncellemesinde NaN gradyanına neden olabilir.
Ve bu örnekleri bulmak istiyorum. Bu arada modelin parametresini güncellemek için bu parti örneklerinin degrade istemiyorum çünkü modelin parametresinin NaN olması olabilir.
Yani dozun bu problemle başa çıkmak için iyi bir fikri var mı?
Kodum aşağıda gibidir:
# Create an optimizer.
params = tf.trainable_variables()
opt = tf.train.AdamOptimizer(1e-3)
gradients = tf.gradients(self.loss, params)
max_gradient_norm = 10
clipped_gradients, self.gradient_norms = tf.clip_by_global_norm(gradients,
max_gradient_norm)
self.optimizer = opt.apply_gradients(zip(clipped_gradients, params))
Çok teşekkür ederim. Ama yine bir sorum var. Koduma tf.add_check_numerics_ops() eklediğimde, Yetersiz Bellek hatası alıyorum. Ve bu çizgiyi kaldır, her şey yolunda. Modelim gerçekten büyük, tf.add_check_numerics_ops() kontrol işlemleri için daha fazla GPU belleği ayıracaktır? – Issac
"tf.check_numerics" çekirdeğinde bir tensör kopyası var: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/check_numerics_op.cc#L60. Yani sadece tf.check_numerics kullanarak bir çift kontrol ekleyin. Kayan yazılan tüm tensörler için tf.add_check_numerics_ops() 'yi kullanan tf.check_numerics 'i kullanmak isterseniz, ek dikkat etmeniz gerekir. – yuefengz