我应该如何在TensorFlow中处理具有nan值的输入数据?

问题描述 投票:8回答:1

我有一个具有S型损失(tf.nn.sigmoid_cross_entropy_with_logits)和Adam优化器(tf.train.AdamOptimizer)的多层感知器。我的输入数据具有多个要素和一些nan要素值。当我用0替换nan值时,我得到一个结果,但是,当我不替换nan值时,我得到了loss = nan。

在TensorFlow中处理nan值的最佳方法是什么,如何将输入数据与nan值一起使用而又不将其替换为0?

tensorflow nan
1个回答
1
投票

问题

我如何以某种方式告诉我的网络忽略一些输入数据。例如,当输入数据为nan

答案

这非常类似于为输入数据添加掩码。您希望输入数据通过,变为零,但您想通过某种方式也向神经网络发出信号,以忽略的位置,并注意其他所有内容。this question about adding a mask中,我回顾了如何将蒙版成功地添加到图像,同时还给出了非图像问题的代码演示。

首先创建一个掩码,输入中存在数据的地方为1,而

    nan

存在的地方为0。
  • 第二,清理将nan转换为0或0.5或任何其他值的输入。
  • 第三,将遮罩堆叠到输入上。如果输入是图像,则遮罩将变为另一个颜色通道。
  • masking question中的代码显示,当添加掩码时,神经网络能够很好地学习,而当未添加掩码时,则无法很好地学习。
    © www.soinside.com 2019 - 2024. All rights reserved.