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

标签 tensorflow nan

我有一个具有 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/

相关文章:

python - 打印tensorflow 2.0损失函数的所有项

tensorflow - 如何保存模型权重以便以后使用?

python - 在存在 NaN 的情况下将 pandas 列拆分为新列

python - 在python中计算互信息返回nan

r - 是否可以评估指数的分数与指数之和

java - 为什么 0.0f/0.0f 不产生任何运行时错误?

python - Q : TensorFlow 1. 0.1 OpKernel 未知操作错误

tensorflow - 在 flutter 中运行 tensorflow-lite 的最佳选择是什么?

python - 加载 TensorFlow 后派生一个 python 进程

python - 检索包含 NaN 值的行的索引