环境信息
操作系统 红帽企业Linux服务器版本6.6
Tensorflow版本: 0.10.0rc0
已安装的CUDA和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)