是否可以在TensorFlow中的两个图之间共享队列?我想做一种自我选择"硬消极"培训期间的例子。
为了加快这个过程,我需要单独的线程来进行硬性负面示例选择,以及培训过程。硬否定选择基于对当前模型的评估,并且它将从检查点文件加载其图形。训练图在另一个线程上运行并写入检查点文件。这两个图应共享相同的队列:训练图将使用示例,硬否定选择将产生它们。
答案 0 :(得分:5)
目前,TensorFlow的开源版本中的不同图形之间不支持共享状态:每个图形都在一个单独的会话中运行,每个会话使用一组隔离的设备。
然而,似乎可以在单个图表中使用队列来实现目标。只需构建一个队列(使用例如tf.FIFOQueue
)并使用tf.import_graph_def()
将图表从检查点文件导入当前图表。使用return_elements
tf.import_graph_def()
参数可以指定包含否定示例的张量的名称,然后添加q.enqueue_many()
操作以将它们添加到队列中。然后,您将分叉一个线程以在循环中运行enqueue_many
操作。在您的培训图表中,您可以使用q.dequeue_many()
获取一批负面示例,并将其用作培训流程的输入。