我有一个具有 sigmoid 损失 (tf.nn.sigmoid_cross_entropy_with_logits
) 和 Adam 优化器 (tf.train.AdamOptimizer
) 的多层感知器。我的输入数据有几个特征和一些纳米特征值。当我用 0 替换 nan 值时,我得到一个结果,但是,当我不替换 nan 值时,我得到 loss=nan。
在 TensorFlow 中处理 nan 值的最佳方法是什么?如何将输入数据与 nan 值一起使用而不将其替换为 0?
最佳答案
问题
我怎样才能以某种方式告诉我的网络忽略一些输入数据。例如当输入数据为nan
时回答
这与向输入数据添加掩码非常相似。您希望输入数据通过,nan 转为零,但您还希望以某种方式向神经网络发出信号,以忽略 nan 的位置并注意其他一切。
在 this question about adding a mask我回顾了如何成功地将蒙版添加到图像中,同时还提供了非图像问题的代码演示。
- 首先创建一个掩码,输入中存在数据的位置为 1,nan 存在的位置为 0。
- 其次,清理输入,将 nan 转换为 0、0.5 或任何其他值。
- 第三,将掩码堆叠到输入上。如果输入是图像,则 mask 将成为另一个颜色 channel 。
masking question中的代码表明,当添加掩模时,神经网络能够很好地学习,而当不添加掩模时,它不能很好地学习。
关于tensorflow - 我应该如何在 TensorFlow 中处理具有 nan 值的输入数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46292835/