2016-04-15 51 views
4

我使用TensorFlow API编写了一个Python脚本,其中包括一个SummaryWriter,用于转储图形定义,因此我可以在TensorBoard中查看它。TensorFlow的目标修剪找不到节点

当运行脚本时,NotFoundError被抛出,说PruneForTargets: Some target nodes not found: Reading/data_queue_EnqueueMany_1。顾名思义,正在讨论的节点是通过调用FIFOQueue(然后在QueueRunner中启动)调用enqueue_many创建的;它确实存在,可以在TensorBoard中清楚地看到。

什么可能导致TensorFlow找不到某些节点?

回答

6

这是一个已知问题,当您启动访问TensorFlow图形的线程(例如您的QueueRunner)时,会在将更多节点添加到图形之前发生。 (底层tf.Graph数据结构不是线程安全用于并行读取和写入。)

的解决方案是移动tf.train.start_queue_runners(sess)(和启动的线程的任何其他代码)之后的最后一个节点被构造。其中一种方法是在致电start_queue_runners()之前立即添加致电tf.get_default_graph().finalize()

+0

它的工作原理,非常感谢! –