Keras 模型预测 NaN

时间:2021-02-06 18:59:27

标签: python tensorflow keras

我正在尝试为我的二元分类问题训练一个模型。

我的数据有 91 列和 5 万行。其中一列是我的二进制目标变量,所有其他列也是数字。这是我尝试训练的方式;

model = Sequential()
model.add(Dense(20, input_dim=90, kernel_initializer='normal', activation='relu'))
model.add(Dense(20, kernel_initializer='normal', activation='relu'))
model.add(Dense(20, kernel_initializer='normal', activation='relu'))
model.add(Dense(1, kernel_initializer='normal', activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(x_train_scaled, y_train, epochs=20)

经过快速训练后,我尝试用我的测试集进行预测,发现所有预测都是 NaN

+ model.predict(x_test_scaled)

- array([[nan],
       [nan],
       [nan],
       ...,
       [nan],
       [nan],
       [nan]], dtype=float32)

顺便说一下,我在训练期间也没有看到损失分数。还有写NaN

1 个答案:

答案 0 :(得分:2)

这通常是由于您的数据集中的 NaNs/infinity 而发生的。您应该考虑在预处理期间删除此类行。

如果所有值都是有限的,下面的代码将返回 True

df = df[np.isfinite(df).all(1)]

如果它返回 False,您可能必须删除 NaN/无穷大

# Replacing infinite with nan 
df.replace([np.inf, -np.inf], np.nan, inplace=True) 

# Dropping all the rows with nan values 
df.dropna(inplace=True) 

# Printing df 
df

有时将优化器更改为 RMSprop 可以解决问题