Как читать имена наборов данных из строкового тензора в tensorflow

Я новичок в тензорном потоке, у меня есть тензор (строковый тип), в котором я сохранил пути к изображениям всех необходимых изображений, которые я хочу использовать для обучения модели.

Вопрос . Как прочитать тензор в очередь, а затем запаковать его в пакет.

Мой подход: дает мне ошибку

    img_names = dataset['f0']
    file_length = len(img_names)
    type(img_names)
    tf_img_names = tf.stack(img_names)
    filename_queue = tf.train.string_input_producer(tf_img_names, num_epochs=num_epochs, shuffle=False)
    wd=getcwd()
    print('In input pipeline')
    tf_img_queue = tf.FIFOQueue(file_length,dtypes=[tf.string])
    col_Image = tf_img_queue.dequeue(filename_queue)
    ### Read Image
    img_file = tf.read_file(wd+'/'+col_Image)
    image = tf.image.decode_png(img_file, channels=num_channels)
    image = tf.cast(image, tf.float32) / 255.
    image = tf.image.resize_images(image,[image_width, image_height])
    min_after_dequeue = 100
    capacity = min_after_dequeue + 3 * batch_size
    image_batch, label_batch = tf.train.batch([image, onehot], batch_size=batch_size, capacity=capacity, allow_smaller_final_batch = True, min_after_dequeue=min_after_dequeue)

Ошибка: TypeError: ожидаемая строка или буфер

Я не знаю, правильный мой подход или нет


person T T    schedule 01.06.2017    source источник


Ответы (1)


Вам не нужно создавать еще одну очередь. Вы можете определить считыватель, который будет удалять элементы из очереди для вас. Вы можете попробовать следующее и прокомментировать, как это происходит.

reader = tf.IdentityReader()
key, value = reader.read(filename_queue)
dir = tf.constant(wd)
path = tf.string_join([dir,tf.constant("/"),value])
img_file = tf.read_file(path)

и чтобы убедиться, что вы вводите правильные пути, выполните

print(sess.run(img_file))

Жду ваших отзывов.

person Harsha Pokkalla    schedule 02.06.2017
comment
что, если я прочитал CSV-файл, используя numpy genfromtxt, например csv_file = np.genfromtxt(args.dataset, delimiter=',',skip_header=1,usecols=(0,1,2,3,4,5), dtype=None), как использовать string_input_producer для постановки в очередь и пакетирования файлов.... - person T T; 05.06.2017
comment
Вам не нужно использовать чтение numpy. Используйте tf.TextLineReader() и анализируйте каждую строку так, как вам нужно, и загружайте изображения. Посмотрите на это: stackoverflow.com/questions/37091899/ - person Harsha Pokkalla; 05.06.2017