Keras,比分对预测值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Keras,比分对预测值相关的知识,希望对你有一定的参考价值。

我目前正在训练Keras模型进行分类(20个班级),文本分类问题。

[当我使用训练和验证集训练模型时,我得到这样的输出:

Epoch 19/20 59500/59500 [==============================-22秒371us / step-损耗:0.0038-精度:0.9989-val_loss:0.6645-val_accuracy:0.9550

建议非常好的验证准确性。之后,当我调用模型以评估分数时(在same验证集上),我得到:

from sklearn.metrics import accuracy_score
predictions = classifier.predict(X_test)
print(f"Keras Score: {classifier.score(X_test, valid_labels)}")
print(f"Accuracy on test set: {100 * accuracy_score(np.argmax(valid_labels, axis=1),    predictions):.2f}%")

收益:

10500/10500 [===============================-1s 66us / step10500/10500 [==============================]-1秒80us / stepKeras得分:0.9546093940734863测试仪精度:49.58%

我希望分数是完全相同的,因为它是相同的数据,相同的度量以及所有内容。标签被编码为一热向量,因此在精度计算中为argmax。

当然,我想获得模型在训练时所具有的性能,我对为什么性能甚至不一样感到困惑。尽管我了解该模型可能不正确,但我不理解该模型为何预测的内容与计算分数所用的内容有所不同(指标是准确性)。

模型训练有:

history = classifier.fit(X_train, train_labels,
                    epochs=20,
                    verbose=True,
                    validation_data=(X_test, valid_labels),
                    batch_size=20)

谢谢!

答案

您的预测是(N,20)个numpy数组吗?从您的标签y进行一次热编码的判断来看,我希望样本x的预测也是每个类别都有概率的矢量(在这种情况下为20)。

如果是这种情况;

accuracy_score(np.argmax(valid_labels, axis=1), np.argmax(predictions, axis=1))

应该做到这一点。

以上是关于Keras,比分对预测值的主要内容,如果未能解决你的问题,请参考以下文章

条件语句练习-比分预测

Keras 预测重复的列

如何让 Keras LSTM 在多变量设置中对多个时间序列进行预测?

如何使用训练有素的 Keras CNN 模型对新的未标记数据进行预测

Keras 神经网络中 val-acc 和预测精度之间的巨大差异

基于预测值的 Keras 自定义召回指标