Python 如何为keras编写生成器预测生成器的模型

Python 如何为keras编写生成器预测生成器的模型,python,tensorflow,optimization,keras,generator,Python,Tensorflow,Optimization,Keras,Generator,我有一个训练有素的keras模型,我试图只使用CPU运行预测。我希望这是尽可能快,所以我想我会使用多个工人预测_发电机。我的预测张量的所有数据都预先加载到内存中。仅供参考,数组是一个张量列表,第一个张量的形状为[nsamples,x,y,nchannels]。我按照使用fit_生成器时遵循的说明制作了一个线程安全生成器 我用我的模型做预测,就像这样 #all_test_in is my list of input data tensors gen = DataGeneratorPredict(a

我有一个训练有素的keras模型,我试图只使用CPU运行预测。我希望这是尽可能快,所以我想我会使用多个工人预测_发电机。我的预测张量的所有数据都预先加载到内存中。仅供参考,数组是一个张量列表,第一个张量的形状为[nsamples,x,y,nchannels]。我按照使用fit_生成器时遵循的说明制作了一个线程安全生成器

我用我的模型做预测,就像这样

#all_test_in is my list of input data tensors
gen = DataGeneratorPredict(all_test_in, batch_size=1024)
new_preds = conv_model.predict_generator(gen,workers=4,use_multiprocessing=True)
但我没有得到任何速度改善使用conv_模型。预测,无论有多少工人。这似乎在适合我的模型时效果很好,即使用多个工人的发电机来加速。我的发电机漏了什么东西吗?除了使用GPU,还有没有更有效的方法来优化预测?

当您刚刚调用时。预测,Keras已经尝试使用所有可用的内核/并行预测您提供的数据点。在这种情况下,具有多个工作进程的predict generator可能不会增加任何好处,因为每个工作进程都需要等待轮到它来执行或共享可用的内核。无论哪种方式,最终都会获得相同的性能

如果您的数据:

不适合记忆。您可以一次进行批处理并进行预测,而不是创建大型数据数组并调用预测。 需要实时处理,每个批次可能会发生变化/是随机的。 无法轻松存储在NumPy数组中,并且除了切片数据点之外,还有其他批处理方式。
谢谢你的回答。你能提供一个关于keras的链接吗?使用所有可用的内核进行预测?那么,除了使用GPU或获得更多CPU之外,没有其他方法可以减少预测时间吗?实际上不是Keras做的,而是默认情况下的Tensorflow。是的,可以使用GPU或更多CPU来加速。
#all_test_in is my list of input data tensors
gen = DataGeneratorPredict(all_test_in, batch_size=1024)
new_preds = conv_model.predict_generator(gen,workers=4,use_multiprocessing=True)