TensorFlow的目标修剪无法找到节点

时间:2016-04-15 11:21:50

标签: tensorflow

我使用TensorFlow API编写了一个Python脚本,包括一个转储图形定义的SummaryWriter,以便我可以在TensorBoard中查看它。

运行脚本时,会引发NotFoundError PruneForTargets: Some target nodes not found: Reading/data_queue_EnqueueMany_1。顾名思义,相关节点是由enqueue_many上的FIFOQueue调用创建的(然后在QueueRunner中启动);它确实存在,并且可以在TensorBoard中清楚地看到。

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

1 个答案:

答案 0 :(得分:7)

这是在您向图表添加更多节点之前启动访问TensorFlow图表的线程(例如您的QueueRunner)时发生的已知问题。 (基础tf.Graph数据结构对于并发读取和写入而言不是线程安全的。)

解决方案是在构造最后一个节点之后移动tf.train.start_queue_runners(sess)(以及启动线程的任何其他代码)。对此进行复核的一种方法是在调用start_queue_runners()之前立即添加对tf.get_default_graph().finalize()的调用。