使用Tensorflow通过多进程进行预测时出现问题



我有 4 个(或更多(模型(结构相同但训练数据不同(。现在我想将它们整合起来做出预测。我想预加载模型,然后通过多进程并行预测一条输入消息(一次一条消息(。但是,程序总是在"session.run"步骤停止。我想不通为什么。

我尝试在每个进程中将所有参数传递给函数,如下面的代码所示。我还尝试使用 Queue 对象并将所有数据(模型对象除外(放入队列中。我还尝试将进程数设置为 1。这没有什么区别。

with Manager() as manager:
first_level_test_features=manager.list()
procs =[]
for id in range(4):
p = Process(target=predict, args=(id, (message, models, configs, vocabs, emoji_dict,first_level_test_features)))
procs.append(p)
p.start()
for p in procs:
p.join()

我没有收到任何错误消息,因为它只是卡在那里。我希望程序可以启动多个进程,每个进程都使用传递给它的模型进行预测。

我不确定不同进程的会话共享将如何工作,这可能是您的问题的来源。鉴于 TensorFlow 的工作方式,我建议将集成调用实现为图形操作,以便它可以通过单个session.run调用运行,TF 尽可能处理计算的并行化。

在实践中,如果你有表示模型预测的符号张量,你可以使用 TF 运算来聚合它们(tf.concattf.reduce_meantf.add_n......无论哪种适合您的设计(,并最终得到一个表示集成预测的单个符号张量。

我希望这有所帮助;如果没有,请提供有关您的设置的更多详细信息,特别是您的模型具有哪种形式。

相关内容

  • 没有找到相关文章

最新更新