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

Sol*_*lli 4 tensorflow

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

在运行脚本时,NotFoundError会抛出一个说法PruneForTargets: Some target nodes not found: Reading/data_queue_EnqueueMany_1.顾名思义,有问题的节点是通过a enqueue_many上的调用创建的FIFOQueue(然后在a中启动QueueRunner); 它确实存在,并且可以在TensorBoard中清楚地看到.

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

mrr*_*rry 7

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

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