首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的变量在tensorflow中更新后变成了NaN

我的变量在tensorflow中更新后变成了NaN
EN

Stack Overflow用户
提问于 2018-03-29 05:13:04
回答 1查看 586关注 0票数 0

所以我正在尝试在tensorflow中实现DQN算法,并且我已经定义了如下所示的损失函数,但是每当我使用ADAM优化器执行权重更新时,在2-3次更新之后,我所有的变量都变成了nan。知道问题出在哪里吗。我的操作可以取(0,10)之间的整数值。你知道我会怎么做吗?

代码语言:javascript
复制
def Q_Values_of_Given_State_Action(self, actions_, y_targets):


        self.dense_output=self.dense_output #Output of the online network which given the Q values of all the actions in the current state

        actions_=tf.reshape(tf.cast(actions_, tf.int32), shape=(Mini_batch,1)) #Actions which was taken by the online network
        z=tf.reshape(tf.range(tf.shape(self.dense_output)[0]), shape=(Mini_batch,1) )

        index_=tf.concat((z,actions_), axis=-1)

        self.Q_Values_Select_Actions=tf.gather_nd(self.dense_output, index_)

        self.loss_=tf.divide((tf.reduce_sum (tf.square(self.Q_Values_Select_Actions-y_targets))), 2)


        return self.loss_
EN

回答 1

Stack Overflow用户

发布于 2018-03-29 05:59:05

你的输入通常高达10,这表明你的梯度正在爆炸式增长。您可以通过将学习率降低到非常小的值来检查这一点(尝试将当前学习率除以100)。如果需要更长的时间才能得到NaNs,或者它们根本没有发生,那就是你的学习率。如果这是你的学习率,那么考虑使用一个单一的向量来表示动作。

通常,您可以使用tf.Print跟踪小的big,使用tfdbg跟踪大的big。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49544277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档