python - 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
?这是某种错误吗?或者我在这里错过了什么?
解决方案
不,这不是一个错误,一旦你知道这两个数字是如何计算的,它就有意义了。由于您verbose=2
在model.evaluate
调用中进行了设置,因此它显示了测试集上批次的进度。
进度条中显示的准确率和损失是批次的指数平均值,以简化可视化。您作为回报获得的损失和准确度model.evaluate
是批次平均的总损失/准确度,并且是您应该认为是最终和正确的数字。
推荐阅读
- java - 将 POJO 对象放入 JTable
- java - 异常发送警报:java.net.SocketException: Broken pipe (Write failed)
- apache-spark - 尽管有资源,但 Spark Jobs 处于 ACCEPTED 状态
- javascript - 比较数组时出现 Chai 断言错误
- android - 上传的 APK 没有有效的签名 Firebase TestLab 仪器测试类型
- ios - 如何将内容从一个应用程序共享到另一个应用程序
- r - 从折叠字符中提取正则表达式(包括“|”)
- rest-assured - 如何从响应中验证类型?
- node.js - 如何修复'events.js:180 throw er; // 未处理的 'error' 事件 Error: spawn ls ENOENT
- angular - 禁用用户 ID 输入字段时更新用户出错