python - 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 的信息中明显的一些东西。
解决方案
是的你可以。
- 你可以预测很多批次(系统会断定它是一个批次)
- 您可以预测一个批次(系统不会尝试计算批次)
两种选择都很好。
使用没有缺点predict_on_batch
。相反,它会更快,predict
因为它做的事情更少。
在if中可能发生的所有内存问题都predict_on_batch
将完全相同。predict
batch_size == len(data)
推荐阅读
- java - 使用 java 权限问题运行 docker
- excel - 如何从excel中提取第5个和第6个最右边的字符
- javascript - image.src = canvas.toDataURL("image/png"); 保存问题
- r - 勾勒geom_bar的整个bar
- javascript - 为所有输入类型创建通用文本框
- macos - MAC OS 上的 QT 窗口无法正确刷新
- java - IntelliJ 调试器仅触发一次断点,直到重新启动应用程序
- java - Spring Boot + JavaFx 自动装配不起作用
- r - 快速非负最小二乘的 Rcpp 实现?
- sql - 新用户登录创建