2016-07-30 10 views
8

Zbudowałem splotową sieć neuronową w tensorflow. Jest wyszkolony i teraz rozpakowuję go i dokonuję ocen.Operacja kolejkowania Tensorflow została anulowana

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

Niestety, pojawił się dziwny błąd i nie mam pojęcia dlaczego.

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 

To tylko część.

+1

To informacji nieszkodliwe wiadomość, która została usunięta w nowszych wersjach tensorflow –

+1

mam Tensorflow 9.0, która jest najnowszą wersją i nocną kompilacją, a także nie pozwoli mi kontynuować pracy programu –

+0

Nie jest jasne, czy ten komunikat wskazuje na błąd, ale zignorowałbym go i spróbował debugować rzeczywisty problem. IE, są kolejkami uruchamiającymi cokolwiek w kolejkach (spójrz na queue.size() po ich uruchomieniu)? –

Odpowiedz

20

Aktualizacja z czatu - program działa poprawnie, a wiadomości, które są drukowane są spowodowane Python zabijając wątki, gdy są uruchomione jako wyjść procesowych.

Komunikaty są nieszkodliwe, ale jest to możliwe, aby uniknąć ich zatrzymanie wątki ręcznie za pomocą wzoru poniżej.

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

Nadal dostaję go w TensorFlow 1.1, z jakiegokolwiek powodu nadal jest? – martianwars

0

Wszystko działa poprawnie, a problem pojawia się na ostatnim etapie, gdy pyton próbuje zabić wątki. Aby to zrobić właściwie należy utworzyć train.Coordinator i przekazać go do queue_runner (nie trzeba przechodzić sess, jako domyślny sesji zostaną wykorzystane

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) 
Powiązane problemy