Tensorflow:如何使用nan值处理输入数据

Tom*_*ood 8 nan tensorflow

我有一个带有sigmoid损失的多层感知器(tf.nn.sigmoid_cross_entropy_with_logits)和一个Adam优化器(tf.train.AdamOptimizer).我的输入数据有几个特征和一些南特征值.当我用0替换nan值时,我得到一个结果,但是,当我不替换nan值时,我得到loss = nan.

在tensorflow中处理nan值的最佳方法是什么?如何使用带有nan值的输入数据而不用0替换它们?

Pan*_*hin 12

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

回答

这与向输入数据添加掩码非常相似。您希望输入数据通过,nan变为零,但您还希望以某种方式向神经网络发出信号以忽略nan所在的位置并注意其他一切。

这个关于添加蒙版的问题中,我回顾了如何将蒙版成功添加到图像中,同时还为非图像问题提供了代码演示。

  • 首先创建一个掩码,输入中存在数据的位置为 1,存在nan的位置为 0 。
  • 其次,清理将nan转换为 0 或 0.5 或任何真正的输入的输入。
  • 第三,将掩码堆叠到输入上。如果输入是图像,则遮罩成为另一个颜色通道。

掩码问题中的代码表明,当添加掩码时,神经网络能够很好地学习,而当不添加掩码时,它就不能很好地学习。

  • 不过,我会进一步将 **nan** 转换为 **random** 数据,以进一步帮助神经网络学习将掩码与有意义和无意义的数据相关联。 (2认同)