2016-07-30 83 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)