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 LSTM 在多变量设置中对多个时间序列进行预测?
如何使用训练有素的 Keras CNN 模型对新的未标记数据进行预测