在张量流中的两个图之间共享队列

时间:2016-02-09 08:17:45

标签: tensorflow

是否可以在TensorFlow中的两个图之间共享队列?我想做一种自我选择"硬消极"培训期间的例子。

为了加快这个过程,我需要单独的线程来进行硬性负面示例选择,以及培训过程。硬否定选择基于对当前模型的评估,并且它将从检查点文件加载其图形。训练图在另一个线程上运行并写入检查点文件。这两个图应共享相同的队列:训练图将使用示例,硬否定选择将产生它们。

1 个答案:

答案 0 :(得分:5)

目前,TensorFlow的开源版本中的不同图形之间不支持共享状态:每个图形都在一个单独的会话中运行,每个会话使用一组隔离的设备。

然而,似乎可以在单个图表中使用队列来实现目标。只需构建一个队列(使用例如tf.FIFOQueue)并使用tf.import_graph_def()将图表从检查点文件导入当前图表。使用return_elements tf.import_graph_def()参数可以指定包含否定示例的张量的名称,然后添加q.enqueue_many()操作以将它们添加到队列中。然后,您将分叉一个线程以在循环中运行enqueue_many操作。在您的培训图表中,您可以使用q.dequeue_many()获取一批负面示例,并将其用作培训流程的输入。