【问题标题】:model.evaluate() in Keras do not cover all datapointsKeras 中的 model.evaluate() 不涵盖所有数据点
【发布时间】:2017-11-07 04:05:20
【问题描述】:

我目前正在学习 Keras,在使用 model.evaluate() 时感到困惑。

我总共有 768 个数据点,但 model.evaluate() 只评估了 32 个数据点,并给出了 75.52% 的准确度。我还尝试了 100、50、20、10 和 1 的批量大小,但它并没有涵盖所有数据点,但准确度保持不变。

如果实现here,你可以查看我的 Jupyter Notebook 文件

我无法理解是我做错了什么,还是 Keras 的功能/错误。

请帮助我。提前致谢。

PS:我已尝试通过 Internet 和 StackExchange 搜索此问题的答案,但没有找到任何答案。如果我的问题是重复的,请告诉我它的链接,我很乐意从这里删除这个问题!

【问题讨论】:

  • 这不应该发生。确保您的 Keras 和 theano 版本是最新的。尝试从源代码构建 keras。如果再次发生这种情况,请在 Keras github 上提出问题
  • 您的keras 版本是什么?请尝试检查分数的形状。也许它是正确的,只有一个 progbar 坏了。
  • @Nain 我检查了版本,theano.__version__0.9.0.dev-c697eeab84e5b8a74908da654b66ec9eca4f1291keras.__version__2.0.2。我在 conda 环境中,现在将 keras 更新到其最新版本 2.0.4。但model.evaluate() 仍然输出相同。更新了 Git 上的 same file 以获得当前结果。我想我应该在 Keras github 上提出这个问题。
  • @MarcinMożejko 当前keras 版本是2.0.4。我检查了分数的形状,它们是 2 个元素的列表。我尝试使用keras_tqdmTQDMNotebookCallback 替换进度条,但是由于model.evaluate() 没有callback 参数我无法在其上实现tqdm,所以我不能确定进度条是否为破碎的。如果您能在这方面提供帮助,请告诉我。

标签: python-3.x machine-learning neural-network keras evaluate


【解决方案1】:

这里的问题在于progbar 而不是evaluate 函数。您的progbar 仅打印评估的第一步。您可以通过检查所有结果是否相同来轻松检查,直到 float32 精度约为 1e-5 - 1e-7。所以我不会为这个问题烦恼,因为jupyter 经常在显示progbar 时遇到问题。

【讨论】:

  • 我猜你对此的看法是正确的。我之前已经注意到结果,但不知道如何理解它们。谢谢你的协助。现在我相信这个progbar 问题是由Keras 社区解决的。
猜你喜欢
  • 2018-11-23
  • 2021-01-10
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2019-02-13
  • 2021-12-29
  • 2013-11-07
  • 1970-01-01
相关资源
最近更新 更多