2017-02-22 2 views
1
версии

tensorflow: 1.0.0Tensorflow FIFOQueue '_4_batch_join/fifo_queue' замкнуто и имеет недостаточные элементы

NUM_THREADS = 4 
    BATCH_SIZE = 32 
    csv_file_queue = tf.train.string_input_producer(csv_files, shuffle=False) 
    jpg_file_queue = tf.train.string_input_producer(jpg_files, shuffle=False) 
    data_batch_list = [read_data(csv_file_queue, jpg_file_queue) for _ in range(NUM_THREADS)] 
    csv_data_batch, jpg_data_batch = tf.train.batch_join(data_batch_list, batch_size=BATCH_SIZE) 

    sess.run(tf.group(tf.global_variables_initializer(), tf.local_variables_initializer())) 

    coord = tf.train.Coordinator() 
    threads = tf.train.start_queue_runners(sess=sess, coord=coord) 
      ... 
    coord.request_stop() 
    coord.join(threads) 

OutOfRangeError (смотри выше TRACEBACK): FIFOQueue '_4_batch_join/fifo_queue' замкнуто и не имеет достаточных элементов (запрошенный 32, текущий размер 17)

ответ

0

Это, вероятно, происходит при подготовке последней партии. Добавить allow_smaller_final_batch=True к вашему train.batch_join вызова: из документации:

Если allow_smaller_final_batch это правда, меньшая партия значение, чем batch_size возвращается, когда очередь закрыта и нет достаточно элементов для заполнения партии, в противном случае отложенные элементы: отброшено. Кроме того, все статические формы всех тензоров выходных сигналов при доступе к с помощью метода get_shape будут иметь первое значение измерения None, , и операции, зависящие от фиксированного batch_size, потерпят неудачу.

Смежные вопросы