首页 > 解决方案 > Keras:关于 GPhilo 关于 predict 与 predict_on_batch 的帖子的问题。不能 predict() 已经很好地处理单个图像?

问题描述

Keras 模型的 predict 和 predict_on_batch 方法有什么区别?

“不同之处在于当您传递大于一批的 x 数据时。

predict 将逐批遍历所有数据,预测标签。因此,它在内部分批进行拆分并一次进料一批。

另一方面,predict_on_batch 假设您传入的数据恰好是一个批次,因此将其提供给网络。它不会尝试拆分它(根据您的设置,如果数组非常大,这可能会对您的 GPU 内存造成问题)” - GPhilo

1) 我无法理解为什么我们会在单个图像上使用 predict_on_batch 而不是直接在单个批次上运行 predict()。Gphilo 说 predict_on_batch 的优点是 predict_on_batch 不会尝试拆分参数中的变量。

对于单个图像,如果数据尝试拆分它,我们关心什么?.predict() 不应该能够很好地处理单个图像吗?predict() 将能够正确识别单个图像,对吗?

假设我们有一个大小为 (1,128,128,1) 的灰度图像 single_image

那么我们不能这样做:

model.predict(single_image)

代替

model.predict_on_batch(single_image) ?

使用 predict_on_batch 似乎也有缺点。那么,如果 predict_on_batch 会导致 GPU 问题,我们为什么还要使用 predict_on_batch 呢?predict_on_batch 会有什么优势?

2)还是我误会了?由于我没有想到的原因,.predict 实际上不能很好地拍摄单个图像吗?

我是一个初学者,我想我可能误解/没有注意到 GPhilo 的信息中明显的一些东西。

标签: pythonkeras

解决方案


是的你可以。

  • 你可以预测很多批次(系统会断定它是一个批次)
  • 您可以预测一个批次(系统不会尝试计算批次)

两种选择都很好。

使用没有缺点predict_on_batch。相反,它会更快,predict因为它做的事情更少。

在if中可能发生的所有内存问题都predict_on_batch将完全相同。predictbatch_size == len(data)


推荐阅读