我使用TensorFlow API编写了一个Python脚本,包括一个转储图形定义的SummaryWriter
,以便我可以在TensorBoard中查看它。
运行脚本时,会引发NotFoundError
PruneForTargets: Some target nodes not found: Reading/data_queue_EnqueueMany_1
。顾名思义,相关节点是由enqueue_many
上的FIFOQueue
调用创建的(然后在QueueRunner
中启动);它确实存在,并且可以在TensorBoard中清楚地看到。
什么可能导致TensorFlow找不到某些节点?
答案 0 :(得分:7)
这是在您向图表添加更多节点之前启动访问TensorFlow图表的线程(例如您的QueueRunner
)时发生的已知问题。 (基础tf.Graph
数据结构对于并发读取和写入而言不是线程安全的。)
解决方案是在构造最后一个节点之后移动tf.train.start_queue_runners(sess)
(以及启动线程的任何其他代码)。对此进行复核的一种方法是在调用start_queue_runners()
之前立即添加对tf.get_default_graph().finalize()
的调用。