2016-12-14 2 views
1

환경 정보생성 NaN의 그라데이션

운영 체제 컴퓨팅 : CUDA의 0.10.0rc0

설치된 버전 : 레드햇 엔터프라이즈 리눅스 서버가

Tensorflow 버전 6.6 출시 및 cuDNN : /usr/local/cuda/lib64/libcudart.so.7.5.23

나는 임시 관심 전략 (https://arxiv.org/abs/1608.02927)으로 모델을 실행 중입니다. 나는 손실을 계산하기 위해 tf.nn.seq2seq.sequence_loss_by_example()을 사용하고 손실을 최소화하기 위해 adam gradient (lr : 0.001)를 사용합니다. 손실은 NaN이 아니지만 일부 가중치의 그라데이션은 NaN 값이되었습니다. 바닐라주의 전략을 사용하면이 NaN 문제가 발생하지 않습니다.

그라디언트가 NaN이 될 때까지 모든 하이퍼 매개 변수를 인쇄해도 그 값은 실제 값입니다.

누군가이 문제를 해결할 수 있도록 도와주세요. 미리 감사드립니다.

부분 코드

attn_vec = tf.reduce_sum(attention_states * y, [2]) # initial attention weights 
if step > 0: 
    history = tf.pack(acc_sum) 
    max_hist = tf.reduce_max(attn_vec, 1, keep_dims=True) 
    cur_scores = tf.exp(attn_vec - max_hist)/tf.reduce_sum(tf.exp((history-max_hist)), 0) # reweight attention weights 
else: 
    cur_scores = tf.exp(attn_vec - tf.reduce_max(attn_vec, 1, keep_dims=True)) 
    m = cur_scores/tf.reduce_sum(cur_scores, 1, keep_dims=True) 
    acc_sum.append(attn_vec) 
+1

을 무게? 어떤 코드를 제공 할 수 있다면 도움이 될 것입니다. – martianwars

+0

어쩌면 학습 속도가 더 빨라지겠습니까? –

+0

xavier initializer를 사용했으며 학습 속도가 낮아 도움이되지 않았습니다. – Zodiac

답변

0

나는 즉시 대답을하지 않지만,이 SO 문제는 문제의 이러한 종류의 디버깅하는 방법을 잘 요약이 있습니다 : 어떻게 당신이 초기화된다 Debugging nans in the backward pass

+0

감사합니다. 그러나 모든 하이퍼 매개 변수와 그레디언트를 인쇄 할 준비가되었습니다. NaN이주의 부분에서 발견되었습니다. 아직도 NaN을 생성하는 이유를 알 수 없습니다. 부가 적으로, 나는 clip_by_value를 max가 1.0이고 min이 -1.0이지만, 도움이되지 않았다. – Zodiac