我正在训练一个通过Keras执行二进制分类的模型。训练完模型后,我尝试对它进行评估,如下所示:
# Evaluate the model
print('Evaluate on test data')
loss, acc = model.evaluate(X_test, y_test, verbose=2)
print('Test loss: %.4f' % loss)
print('Test accuracy: %.4f' % acc)
我得到了这个结果:
Evaluate on test data
116/1 - 0s - loss: 0.3099 - accuracy: 0.8793
Test loss: 0.2802
Test accuracy: 0.8793
我的问题是,为什么报告的损失值不同?即0.3099
和0.2802
?这是某种错误吗?还是我在这里想念东西?
答案 0 :(得分:2)
不,这不是错误,一旦您知道如何计算两个数字,就有意义。由于您在verbose=2
调用中设置了model.evaluate
,因此它将显示测试集中的批处理进度。
进度条中显示的准确性和损失是批次的指数平均值,以便于可视化。从model.evaluate
返回的损失和准确性是批次平均的总损失/准确性,并且是您应视为最终和正确的数字。