在 Keras 中进行模型评估
Model Evaluate in Keras
我正在训练模型以通过 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
?这是某种错误吗?或者我在这里遗漏了什么?
不,这不是错误,一旦您了解这两个数字的计算方式,它就有意义了。由于您在 model.evaluate
调用中设置了 verbose=2
,它会显示测试集上的批处理进度。
进度条中显示的准确性和损失是批次的指数平均值,以便于可视化。您从 model.evaluate
得到的 return 的损失和准确度是批次的总 loss/accuracy 平均值,并且是您应该认为是最终和正确的数字。
我正在训练模型以通过 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
?这是某种错误吗?或者我在这里遗漏了什么?
不,这不是错误,一旦您了解这两个数字的计算方式,它就有意义了。由于您在 model.evaluate
调用中设置了 verbose=2
,它会显示测试集上的批处理进度。
进度条中显示的准确性和损失是批次的指数平均值,以便于可视化。您从 model.evaluate
得到的 return 的损失和准确度是批次的总 loss/accuracy 平均值,并且是您应该认为是最终和正确的数字。