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

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

运行脚本时,会抛出NotFoundError,说PruneForTargets:找不到一些目标节点:Reading / data_queue_EnqueueMany_1.顾名思义,所讨论的节点是由FIFOQueue上的enqueue_many调用创建的(然后在QueueRunner中启动);它确实存在,并且可以在TensorBoard中清楚地看到.

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

最佳答案
这是在向图表添加更多节点之前启动访问TensorFlow图形的线程(例如QueueRunner)时发生的已知问题. (对于并发读取和写入,底层tf.Graph数据结构不是线程安全的.)

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

转载注明原文:TensorFlow的目标修剪无法找到节点 - 代码日志