测试预测都一样
Test predictions are all the same
我正在尝试为推荐任务构建一个带有二进制输出的 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.]
我在这里真的很挣扎,如果有人能帮助我,那将非常有帮助。
可能有两个原因:
1- 如果你的训练集和测试集太稀疏,那么你在测试集上的准确性会很差
2- 您的模型过拟合。
答案 1:
如果数据集太稀疏,您需要重新排列它们。尝试添加一些验证值进行测试,看看结果是否有变化。
答案 2:
如果您的模型过度拟合:
a- 添加新图层
b- 辍学
c- 增加批量大小
可能会解决您的问题。
我正在尝试为推荐任务构建一个带有二进制输出的 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.]
我在这里真的很挣扎,如果有人能帮助我,那将非常有帮助。
可能有两个原因:
1- 如果你的训练集和测试集太稀疏,那么你在测试集上的准确性会很差
2- 您的模型过拟合。
答案 1:
如果数据集太稀疏,您需要重新排列它们。尝试添加一些验证值进行测试,看看结果是否有变化。
答案 2:
如果您的模型过度拟合:
a- 添加新图层
b- 辍学
c- 增加批量大小
可能会解决您的问题。