環境情報生成NaNの勾配
オペレーティングシステムのコンピューティング:CUDAの 0.10.0rc0
インストールバージョン: のRed Hat Enterprise Linux Serverは
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)
どのように初期化されています体重?あなたがいくつかのコードを提供できればそれは役に立ちます – martianwars
もっと小さい学習率でしょうか? –
私はxavierイニシャライザを使用しましたが、学習の速度が遅いと助けになりませんでした。 – Zodiac