2016-07-30 116 views
8

我已經在張量流中構建了一個卷積神經網絡。它是受過訓練的,現在我將它解包並進行評估。Tensorflow Enqueue操作被取消

import main 
import Process 
import Input 

eval_dir = "/Users/Zanhuang/Desktop/NNP/model.ckpt-250" 
checkpoint_dir = "/Users/Zanhuang/Desktop/NNP/checkpoint" 

def evaluate(): 
    with tf.Graph().as_default() as g: 
    images, labels = Process.eval_inputs() 
    forward_propgation_results = Process.forward_propagation(images) 
    init_op = tf.initialize_all_variables() 
    saver = tf.train.Saver() 
    top_k_op = tf.nn.in_top_k(forward_propgation_results, labels, 1) 

    with tf.Session(graph=g) as sess: 
    tf.train.start_queue_runners(sess=sess) 
    sess.run(init_op) 
    saver.restore(sess, eval_dir) 
    print(sess.run(top_k_op)) 


def main(argv=None): 
    evaluate() 

if __name__ == '__main__': 
    tf.app.run() 

不幸的是出現了一個奇怪的錯誤,我不知道爲什麼。

W tensorflow/core/kernels/queue_base.cc:2 
W tensorflow/core/kernels/queue_base.cc:294] _0_input_producer: Skipping cancelled enqueue attempt with queue not closed 
W tensorflow/core/kernels/queue_base.cc:294] _1_batch/fifo_queue: Skipping cancelled enqueue attempt with queue not closed 
E tensorflow/core/client/tensor_c_api.cc:485] Enqueue operation was cancelled 
    [[Node: batch/fifo_queue_enqueue = QueueEnqueue[Tcomponents=[DT_FLOAT, DT_INT32], _class=["loc:@batch/fifo_queue"], timeout_ms=-1, _device="/job:localhost/replica:0/task:0/cpu:0"](batch/fifo_queue, Cast_1, Cast)]] 
E tensorflow/core/client/tensor_c_api.cc:485] Enqueue operation was cancelled 
    [[Node: batch/fifo_queue_enqueue = QueueEnqueue[Tcomponents=[DT_FLOAT, DT_INT32], _class=["loc:@batch/fifo_queue"], timeout_ms=-1, _device="/job:localhost/replica:0/task:0/cpu:0"](batch/fifo_queue, Cast_1, Cast)]] 
E tensorflow/core/client/tensor_c_api.cc:485] Enqueue operation was cancelled 
    .... 
    [[Node: batch/fifo_queue_enqueue = QueueEnqueue[Tcomponents=[DT_FLOAT, DT_INT32], _class=["loc:@batch/fifo_queue"], timeout_ms=-1, _device="/job:localhost/replica:0/task:0/cpu:0"](batch/fifo_queue, Cast_1, Cast)]] 
E tensorflow/core/client/tensor_c_api.cc:485] Enqueue operation was cancelled 
    [[Node: batch/fifo_queue_enqueue = QueueEnqueue[Tcomponents=[DT_FLOAT, DT_INT32], _class=["loc:@batch/fifo_queue"], timeout_ms=-1, _device="/job:localhost/replica:0/task:0/cpu:0"](batch/fifo_queue, Cast_1, Cast)]] 
W tensorflow/core/kernels/queue_base.cc:294] _1_batch/fifo_queue: Skipping cancelled enqueue attempt with queue not closed 
... 
W tensorflow/core/kernels/queue_base.cc:294] _1_batch/fifo_queue: Skipping cancelled enqueue attempt with queue not closed 
E tensorflow/core/client/tensor_c_api.cc:485] Enqueue operation was cancelled 

這只是它的一部分。

+1

這是該公司在tensorflow –

+1

我有新的版本被移除的無害信息消息Tensorflow 9.0這是最新版本,每晚編譯,也不會讓我繼續運行程序 –

+0

不清楚這條消息是否指示錯誤,我會忽略它並嘗試調試實際問題。 IE,隊列運行隊列隊列中的任何東西(在啓動它們後查看queue.size())? –

回答

20

從聊天更新 - 程序成功運行,並且打印的消息是由於Python在進程退出時正在運行而殺死線程。

消息是無害的,但可以通過使用下面的模式手動停止線程來避免它們。

coord = tf.train.Coordinator() 
threads = tf.train.start_queue_runners(sess=sess, coord=coord) 
<do stuff> 
coord.request_stop() 
coord.join(threads) 
+1

我仍然在TensorFlow 1.1中獲得它,任何它仍然存在的原因? – martianwars

0

一切工作正常,並在python試圖殺死線程的最後階段發生問題。要做到這一點正常,你應該創建一個train.Coordinator,並把它傳遞給你的queue_runner(無需通過SESS,爲默認會話將被用於

with tf.Session() as sess: 
    coord = tf.train.Coordinator() 
    threads = tf.train.start_queue_runners(coord=coord) 
    // do your things 
    coord.request_stop() 
    coord.join(threads)