2016-04-15 46 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

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