2016-07-30 13 views
8

Ich hatte ein Convolutional Neuronal Netzwerk in Tensorflow gebaut. Es ist trainiert und jetzt entpacke ich es und führe Auswertungen durch.Tensorflow Enqueue Operation wurde abgebrochen

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() 

Leider ist ein seltsamer Fehler aufgetaucht und ich habe keine Ahnung warum.

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 

Dies ist nur ein Teil davon.

+1

Das ist eine harmlose Info-Nachricht, die in neueren Versionen von tensorflow –

+1

Löschungen wurde ich Tensorflow 9.0.Was ist die neueste Version, und die nächtliche Build.Außerdem lässt es mich nicht weiter mit dem Programm. –

+0

Es ist nicht klar, dass diese Nachricht einen Fehler anzeigt.Ich würde es ignorieren und versuchen, das eigentliche Problem zu debuggen. IE, sind die Warteschlangenläufer, die alles in die Warteschlangen einreihen (siehe queue.size() nach dem Start)? –

Antwort

20

Update vom Chat - das Programm wird erfolgreich ausgeführt, und die Nachrichten, die gedruckt werden, sind darauf zurückzuführen, dass Python beim Ausführen des Prozesses Threads löscht, während sie ausgeführt werden.

Die Nachrichten sind harmlos, aber es ist möglich, sie zu vermeiden, indem Sie die Threads manuell mit dem folgenden Muster stoppen.

+1

Ich bekomme es immer noch in TensorFlow 1.1, aus irgendeinem Grund ist es immer noch da? – martianwars

0

Alles funktioniert ordnungsgemäß und das Problem tritt auf der allerletzten Stufe auf, wenn Python versucht, Threads zu beenden. Um dies zu tun richtig sollten Sie eine train.Coordinator erstellen und übergeben es an Ihre queue_runner (keine Notwendigkeit sess passieren, als Standardsitzung verwendet wird

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) 
Verwandte Themen