Keras 拟合忽略 nan 值

Keras fitting ignoring nan values

我正在训练神经网络进行回归,(1 个输入和 1 个输出)。让我们 xy 分别是通常的输入和输出数据集。

我的问题是 y 数据集(不是 x)有一些值设置为 nan,所以拟合为 nan。我想知道是否有一个选项可以忽略拟合中的 nan 值,类似于 numpy 函数 np.nanmean 来计算忽略 nans 等的平均值。

如果该选项不存在,我想我必须找到 nan 值并手动删除它们,同时删除 x 中的值对应于y中的nan位置。

x       y
2       4
3       2
4      np.nan
5       7
6      np.nan
7      np.nan

在这个简单的示例中,应删除 y 列中的 nan 值,同时删除 x 列 (4, 6, 7) 中的相应值。

谢谢。

编辑: 好的,我在过滤 nans 时遇到问题,我这样做:

for index, x in np.ndenumerate(a):
    if x == np.nan:
        print index, x

它不打印任何东西,我确定有 nan 值...

编辑(自我回答): 好的,我找到了一种本地化 nans 的方法:

for index, x in np.ndenumerate(a):
      if x != x:
           print index, x

如评论中所述,只需删除 nan 作为预处理步骤:

import numpy as np

x = range(2,8)
y = [4,2,np.nan,7,np.nan,np.nan]

for a,b in zip(x,y):
    if str(b) == 'nan':
        x.remove(a)
        y.remove(b)

print x,y

产生 [2, 3, 5] [4, 2, 7].

如果您正在使用某种工具预处理数据,从而获得 np.nan,请检查 API 是否允许您禁用此行为,并花点时间思考这是否是 真的你想要的行为(或者如果你想把它映射到常量,因为你发现你的输入很有价值,即使它们没有标签)。