Keras TF后端预测批次大小为1时速度较慢

时间:2019-05-09 04:27:13

标签: python performance keras

我将蒙特卡洛树搜索与卷积神经网络结合起来作为推广策略。我已经确定Keras model.predict函数非常慢。经过实验后,我发现模型参数大小和预测样本大小出人意料地不会显着影响速度。供参考:

  • 0.00135549 s用于3个批处理大小= 3的样本
  • 0.00303991 s用于3个批处理大小= 1的样本
  • 0.00115528 s用于1个批处理大小= 1的样本
  • 0.00136132 s用于10个批处理大小= 10的样本

如您所见,我可以以与1个样本大致相同的速度预测10个样本。虽然将参数大小减小100倍会引起注意,但更改也非常小,但是无论如何我都不希望改变太大。另外,虽然我不认为这是问题所在,但由于同一模型多次预测,因此预测函数在第一次运行时(〜0.2s)非常慢。

我想知道是否有一些解决方法,因为显然可以快速评估10个样本,我想做的就是在不同时间而不是一次预测样本,因为我需要在之前更新Tree Search做出新的预测。也许我应该改为使用tensorflow吗?

1 个答案:

答案 0 :(得分:0)

批处理大小在预测时控制并行性,因此可以预期的是,增加批处理大小将具有更好的性能,因为您可以使用更多的内核并更有效地使用GPU。

您真的无法解决,没有真正的解决方法,批处理大小为1是性能最差的情况。也许您应该研究一个较小的网络,该网络可以更快地进行预测,或者如果您的实验是在GPU中进行的话,则可以在CPU上进行预测,以最大程度地减少传输带来的开销。

请不要忘记model.predict对网络进行了完整的前向传递,因此其速度完全取决于网络体系结构。