Python 计算梯度时生成NaN

Python 计算梯度时生成NaN,python,tensorflow,Python,Tensorflow,环境信息 操作系统: Red Hat Enterprise Linux Server 6.6版 Tensorflow版本: 0.10.0rc0 CUDA和cuDNN的安装版本: /usr/local/cuda/lib64/libcudart.so.7.5.23 我正在运行一个带有时间注意策略()的模型。我使用tf.nn.seq2seq.sequence\u loss\u by_example()来计算损失,并使用adam梯度(lr:0.001)来最小化损失。损失不是NaN,但某些重量的梯度变成了

环境信息

操作系统: Red Hat Enterprise Linux Server 6.6版

Tensorflow版本: 0.10.0rc0

CUDA和cuDNN的安装版本: /usr/local/cuda/lib64/libcudart.so.7.5.23

我正在运行一个带有时间注意策略()的模型。我使用
tf.nn.seq2seq.sequence\u loss\u by_example()
来计算损失,并使用adam梯度(lr:0.001)来最小化损失。损失不是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)

如何初始化权重?如果你能提供一些代码,它会很有帮助,也许更小的学习率?我使用了xavier初始化器,更小的学习率没有帮助。你如何初始化权重?如果你能提供一些代码,它会很有帮助,也许学习率会更低?我使用了xavier初始值设定项,而学习率越低没有帮助。