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

新手上路,请多包涵

根据 keras 文档

 predict_on_batch(self, x)
Returns predictions for a single batch of samples.

但是,在批量调用时,似乎与标准 predict 方法没有任何区别,无论它是一个元素还是多个元素。

 model.predict_on_batch(np.zeros((n, d_in)))

是相同的

model.predict(np.zeros((n, d_in)))

(a numpy.ndarray 形状 (n, d_out

原文由 Phylliade 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

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

predict逐批 检查所有数据,预测标签。因此,它在内部分批进行拆分并一次喂养一批。

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

原文由 GPhilo 发布,翻译遵循 CC BY-SA 3.0 许可协议

与在单个批次上执行的预测相比,predict_on_batch 似乎要快得多。

  • 批次及型号信息
    • 批量形状:(1024、333)
    • 批处理数据类型:float32
    • 模型参数:~150k
  • 时间结果:
    • 预测: ~1.45 秒
    • predict_onbatch: **~95.5 毫秒_**

总而言之,predict 方法有额外的操作来确保一批批次的集合得到正确处理,而 predict_on_batch 是一种轻量级的预测替代方法,应该用于单个批次。

原文由 Kutay YILDIZ 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题