Keras 总是预测所有 0 或所有 1



我在预测函数预测我的模型中的所有0或所有1时遇到一些问题。这是我的模型

model = keras.Sequential(
[
layers.BatchNormalization(),
layers.Dense(200, activation="relu"),
layers.Dense(500, activation="relu"),
layers.Dense(1300, activation="relu"),
layers.Dense(2000, activation="relu"),
layers.Dense(1320, activation="relu"),
layers.Dense(710, activation="relu"),
layers.Dense(150, activation="relu"),
layers.Dense(30, activation="relu"),
layers.BatchNormalization(),
layers.Dense(1, activation="sigmoid"),
]
)
model.compile(loss='binary_crossentropy', optimizer=keras.optimizers.Adam(learning_rate=(0.001)), metrics=[metrics])
history = model.fit(training, target, batch_size=2048, epochs=100, shuffle=True, validation_split=0.2)

我对深度学习非常陌生,并试图创建模型来分类和预测。我的答案只是基于0或1,这将表明客户是否会离开或长期留在客户中。我已经测试了null和NaN的数据。我看了很多关于这可能是什么的帖子,在大多数情况下,人们似乎使用了错误的激活函数来分类而不是回归问题。答案是,如果你使用二进制交叉方差,你应该使用s型(为什么二进制Keras CNN总是预测1?)我认为我的网络的输出是正确的,因为我使用的是二进制交叉熵的ReLu和SigMoid,但无论何时我预测,它都是持续的全部为0或全部为1。层可能没有太大的意义,我在这方面仍然很新,并且在我训练和评估时,看看层是如何影响结果的。

下面是我对数据

使用predict的大致方法
data = pd.read_csv("judge.csv", skiprows=range(0,0))
samples_to_predict = data.drop(['Surname', 'CreditScore', 'Geography', 'Gender', 'Tenure', 'NumOfProducts', 'HasCrCard', 'EstimatedSalary'], axis=1)
prediction = loaded_model.predict(samples_to_predict.values)
print(prediction)

我一直在尝试调试这个一段时间,任何帮助,错误的方向可能来自将受到欢迎。我试过把我的epoch增加到1000,我试过降低我的learning_rate,我相信BatchNormalization可能会照顾到不缩放我的数据(我可能会误解),我试过降低我的batch_size,我试过简单地使用3个密集层作为两个ReLu和一个Sigmoid,检查我预测的数据是一个numpy数组,它们到目前为止都产生了预测输出所有0或所有1的相同结果。

原来我使用的是我没有训练模型的数据类别的预测。例如,我有一个标题为CustomerID的列,我将其删除以训练模型,但是当我进行预测时,我忘记删除使模型预测所有0或所有1的列。在解决了这个问题并确保我只使用我训练它的类别来预测之后,我得到了不全为0或全为1的预测。

相关内容

  • 没有找到相关文章

最新更新