我正在训练一个模型,通过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?这是一种bug吗?还是我错过了什么?
发布于 2020-01-21 21:15:13
不,这不是一个bug,一旦你意识到这两个数字是如何计算的,它就有意义了。由于您在model.evaluate调用中设置了verbose=2,因此它显示了测试集上批处理的进度。
进度条中显示的准确性和损失是批次的指数平均值,以便于可视化。从model.evaluate返回的损失和准确率是批次平均的总损失/准确率,是您应该考虑的最终和正确的数字。
https://stackoverflow.com/questions/59840289
复制相似问题