python - Keras同批次的训练和评估结果不同
问题描述
如何可能进入以下情况?
In[20] model.test_on_batch(x, y)
Out[20]: [4.861001, 0.0]
In[21]: model.train_on_batch(x, y)
Out[21]: [0.019215763, 0.99609375]
两个输出值分别对应二进制交叉熵和二进制精度。
也就是说,同一批模型的训练和测试结果是完全不同的。训练结果大概是好的。预测(带有model.predict
)也不正确。
在 TensorFlow 1.8.0 下运行 Keras 2.2.4。
解决方案
如果您使用具有 Dropout 或 BatchNormalization 层的模型,这是完全正常的,因为它们在训练和测试期间具有不同的行为。如果您添加任何正则化术语,那么这些将在测试期间被禁用,它将影响您从中获得的任何损失model.evaluate
推荐阅读
- node.js - 在nodejs中逐块将文件发送到客户端
- asp.net - 我的 ashx 页面正在返回正文,但我只想发送状态码 200
- reactjs - 在 Storybook 的 preview.ts 中使用 addDecorator 会抛出比之前渲染更多的钩子
- python - VSCode 奇怪地为 python 代码着色?
- python - 使用 PULP 进行需求优化计划
- python - 使用自定义命令从终端运行 python 代码
- python - 如何合并存储在python嵌套列表中的numpy数组
- python - 如何防止在while循环中多次调用函数 - PYTHON
- python - 每次更改变量时都会覆盖 CSV 文件中的行
- c# - 如何将一个数组中的每个元素减去另一个数组?