【发布时间】:2017-03-02 16:50:36
【问题描述】:
问题
我在 MNIST 上运行深度神经网络,其中损失定义如下:
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, label))
该程序似乎运行正常,直到我在 10000+ th minibatch 中出现 nan 损失。有时,程序会正常运行,直到完成。我认为tf.nn.softmax_cross_entropy_with_logits 给了我这个错误。
这很奇怪,因为代码只包含mul 和add 操作。
可能的解决方案
也许我可以使用:
if cost == "nan":
optimizer = an empty optimizer
else:
...
optimizer = real optimizer
但我找不到nan 的类型。如何检查变量是否为nan?
我还能如何解决这个问题?
【问题讨论】:
-
检查“tf.add_check_numerics_ops”的实现,将
Assertops添加到每个张量以确保没有nan,因此您可以使用它用来检查nanness的任何东西 -
我是 tensorflow 新手,当我使用“tf.add_check_numerics_ops”时,它给我带来了一个错误“tensorflow.python.framework.errors.InvalidArgumentError: All inputs to node model/CheckNumerics_254 must be from the同框。”我用错了吗?
-
我的意思是您可以查看
add_check_numerics_ops的实现以查看哪个操作确定变量是否为NaN,并使用该操作
标签: python tensorflow nan