【发布时间】:2018-02-27 18:57:46
【问题描述】:
我有一个带有 sigmoid 损失 (tf.nn.sigmoid_cross_entropy_with_logits) 和 Adam 优化器 (tf.train.AdamOptimizer) 的多层感知器。我的输入数据有几个特征和一些 nan 特征值。当我将 nan 值替换为 0 时,我会得到一个结果,但是,当我不替换 nan 值时,我会得到 loss=nan。
在 TensorFlow 中处理 nan 值的最佳方法是什么?如何在不将其替换为 0 的情况下将输入数据与 nan 值一起使用?
【问题讨论】:
-
如果您的数据中有 NaN,则获取
loss == NaN是预期的行为,因为任何涉及 NaN 的算术运算都会导致 NaN。因此,是的,您必须删除它们。如何做到这一点由您决定,有几种可能性(替换为0只是其中一种) -
谷歌“处理缺失值”以了解可能性并尝试找出适用于您的情况的可能性
-
你不能用 nan 值做有意义的计算。我不知道您的具体应用,但您可能想忽略这些值。如果您想在 tensorflow 图中执行此操作,可以查看 tf.is_nan、tf.where、tf.boolean_mask。
-
感谢您的 cmets。
标签: tensorflow nan