计算梯度

时间:2016-12-14 06:15:02

标签: python tensorflow

环境信息

操作系统 红帽企业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)

0 个答案:

没有答案