Python Keras tf后端预测批量大小为1时速度较慢
我将蒙特卡罗树搜索与卷积神经网络相结合作为推出策略。我已经确定Keras模型。预测函数非常慢。经过实验,我发现令人惊讶的是,模型参数大小和预测样本大小对速度没有显著影响。供参考:Python Keras tf后端预测批量大小为1时速度较慢,python,performance,keras,Python,Performance,Keras,我将蒙特卡罗树搜索与卷积神经网络相结合作为推出策略。我已经确定Keras模型。预测函数非常慢。经过实验,我发现令人惊讶的是,模型参数大小和预测样本大小对速度没有显著影响。供参考: 批次尺寸为3的3个样品的0.00135549 s 批次尺寸为1的3个样品的0.00303991 s 批次尺寸=1的1个样品0.00115528秒 批次尺寸为10的10个样品为0.00136132 s 正如你所见,我可以预测10个样本,速度与1个样本大致相同。如果我将参数大小减少100倍,那么变化也非常小,尽管很明显
- 批次尺寸为3的3个样品的0.00135549 s
- 批次尺寸为1的3个样品的0.00303991 s
- 批次尺寸=1的1个样品0.00115528秒
- 批次尺寸为10的10个样品为0.00136132 s
我想知道是否有一些解决办法,因为很明显,这10个样本可以很快进行评估,我只想在不同的时间预测样本,而不是一次预测所有样本,因为我需要在进行新预测之前更新树搜索。也许我应该改为使用tensorflow?批量大小控制预测时的并行性,因此预计增加批量大小将具有更好的性能,因为您可以使用更多的内核并更有效地使用GPU 您无法真正解决问题,没有什么真正需要解决的问题,使用1的批处理大小是性能最差的情况。也许您应该研究一个更小的网络,它可以更快地进行预测,或者如果您的实验是在GPU中完成的,那么您可以在CPU上进行预测,以最大限度地减少传输带来的开销
不要忘记,
model.predict
对网络进行全向前传递,因此其速度完全取决于网络架构。在预测时,批大小控制并行性,因此预计增加批大小将具有更好的性能,因为您可以使用更多的内核并更有效地使用GPU
您无法真正解决问题,没有什么真正需要解决的问题,使用1的批处理大小是性能最差的情况。也许您应该研究一个更小的网络,它可以更快地进行预测,或者如果您的实验是在GPU中完成的,那么您可以在CPU上进行预测,以最大限度地减少传输带来的开销
不要忘记,
model.predict
会对网络进行完全的前向传递,因此其速度完全取决于网络架构。如果我多次调用predict,keras会在每次调用时重新加载gpu,并在调用之间保留gpu中的权重吗?我的模型有一百万个参数,但输入和输出向量只有几个字节,而且速度很慢。@grabbag,听起来你应该问你自己的问题。如果我多次调用predict,keras是在每次调用时都重新加载gpu的所有权重,还是在调用之间将权重保留在gpu中?我的模型有一百万个参数,但是输入和输出向量只有几个字节,而且速度很慢。@grabbag,听起来你应该问你自己的问题。