2017-02-14 8 views
1

У меня возникла проблема с чтением изображений tensorflow при использовании очереди. Пожалуйста, дайте мне знать, какую ошибку я делаю. Ниже приведен код.OutOfRangeError (см. Выше для отслеживания): FIFOQueue '_1_batch/fifo_queue' закрыт и имеет недостаточные элементы (запрошенный 32, текущий размер 0)

import tensorflow as tf 
slim = tf.contrib.slim 
from tensorflow.python.framework import ops 

import glob 
filelist = glob.glob("/*.png") 
filelist[0] 

imagelist = ops.convert_to_tensor(filelist) 

#Makes an input queue 
input_queue = tf.train.slice_input_producer([imagelist],num_epochs = 2, shuffle = True, capacity = 64*3072) 

Я использовал разные значения емкости, но ни один из них работал

def read_images_from_disk(input_queue): 
    file_contents = tf.read_file(input_queue[0]) 
    example = tf.image.decode_png(file_contents, channels=3) 
    return example 

image = read_images_from_disk(input_queue) 

image.set_shape([28,28,3]) 
image_batch = tf.train.batch([image],batch_size = 32) 

with tf.Session() as sess: 
sess.run(tf.initialize_all_variables()) 
coord = tf.train.Coordinator() 
threads = tf.train.start_queue_runners(coord=coord) 

for i in range(20): 
    print (sess.run(image_batch)) 

coord.request_stop() 
coord.join(threads) 
sess.close() 


OutOfRangeError (see above for traceback): FIFOQueue '_1_batch/fifo_queue' 
is closed and has insufficient elements (requested 32, current size 0)  

Пожалуйста, помогите мне

+0

Не могли бы вы попытаться запустить очереди за пределами сеанса? – drpng

+0

Нет. Это приводит к следующей ошибке. ValueError: не удается запустить очередь очередей: сеанс по умолчанию не зарегистрирован. Используйте 'с sess.as_default()' или передайте явный сеанс в tf.start_queue_runners (sess = sess). –

+0

Извините, я должен спросить - вам нужно как минимум 32 изображения, чтобы иметь полную 32 партии. У вас достаточно изображений в этом каталоге? – drpng

ответ

1

Вы можете добавить очередь имен файлов, например, string_input_producer, чтобы запустить все файлы в папке с заменой. И попробуйте прокомментировать shuffle_batch и посмотреть, получает ли очередь имен файлов какие-либо данные. Этот метод может выполняться несколько раз, если вы не оставили num_epoch.

+0

Спасибо, я изменил с train.batch на train.shuffle_batch и место размещения изображения в качестве метки. Это сработало –

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

  • Нет связанных вопросов^_^