Keras模型预测NaN



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

我的数据有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)

顺便说一下,我在训练中也没有看到loss score。还写着NaN

这通常是因为数据集中的NaNs/infinity。您应该考虑在预处理过程中删除这些行。

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

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

如果它返回False,你可能需要删除NaN/infinity

# 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可以解决问题

相关内容

  • 没有找到相关文章