【发布时间】:2022-01-26 11:24:42
【问题描述】:
我有一个有 60 个 CPU 的系统。我打算在多张图像上并行化 Keras 模型的预测。我尝试了以下代码:
img_model1 = tensorflow.keras.models.load_model('my_model.h5')
img_model2 = tensorflow.keras.models.load_model('my_model.h5')
img_model3 = tensorflow.keras.models.load_model('my_model.h5')
models=[img_model1,img_model2,img_model3] # all the three are same models
我尝试使用索引来避免弱引用酸洗错误:
def _apply_df(args):
df, model_index = args
preds=prediction_generator(df['image_path'])
return models[model_index].predict(preds)
def apply_by_multiprocessing(df, workers):
workers = workers
pool = Pool(processes=workers)
result = pool.map(_apply_df, [(d,i) for i,d in enumerate(np.array_split(df[['image_path']], workers))])
pool.close()
return pd.concat(list(result))
apply_by_multiprocessing(df=data, workers=3)
代码会一直运行而不会产生任何结果... 我想这个问题可以用 tf.Sessions() 解决,但我不确定如何......
【问题讨论】:
标签: pandas keras multiprocessing pool weak-references