【问题标题】:Test predictions are all the same测试预测都是一样的
【发布时间】:2020-10-30 09:23:30
【问题描述】:

我正在尝试为推荐任务构建一个带有二进制输出的 Keras 模型。

在我构建并训练它之后,它似乎正在融合并提高训练和验证的准确性:

EPOCH:  0
Train on 4641920 samples, validate on 1160480 samples
Epoch 1/1
4641920/4641920 [==============================] - 93s 20us/step - loss: 0.0317 - val_loss: 0.0262
TRAIN F1:  0.16175450762829402
VAL F1:  0.09613703897919944
EPOCH:  1
Train on 4641920 samples, validate on 1160480 samples
Epoch 1/1
4641920/4641920 [==============================] - 100s 22us/step - loss: 0.0238 - val_loss: 0.0256
TRAIN F1:  0.2667970500753779
VAL F1:  0.1608853650479022

但是当我尝试预测测试集中的值时,它只输出 0(但是验证集似乎没有这样的问题):

val_prediction = model.predict(x=[val_customer_id, val_vendor_id], verbose=1, batch_size=384)
print(np.unique(val_prediction.round()))

1160480/1160480 [==============================] - 6s 5us/step
    [0. 1.]



val_prediction = model.predict(x=[test_customer_id, test_vendor_id], verbose=1, batch_size=384)
print(np.unique(val_prediction.round()))

1672000/1672000 [==============================] - 8s 5us/step
[0.]

我在这里真的很挣扎,如果有人可以帮助我,那将非常有帮助。

【问题讨论】:

    标签: keras deep-learning neural-network classification recommendation-engine


    【解决方案1】:

    有两种可能的原因:

    1- 如果你的训练集和测试集太稀疏,那么你在测试集上的准确率会很差

    2- 你的模型过拟合了。

    答案 1:

    如果数据集太稀疏,则需要重新排列它们。尝试添加一些验证值进行测试,看看结果是否有所变化。

    答案 2:

    如果您的模型过拟合:

    a- 添加新图层

    b- 辍学

    c- 增加批量大小

    可能会解决您的问题。

    【讨论】:

    • 如果我的模型过拟合,验证预测会不会全错?
    • 没有。由于您从训练集中选择了验证数据,因此您的模型表现良好。 towardsdatascience.com/…
    猜你喜欢
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 2017-10-30
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多