处理张量流中的大图像数据集

时间:2017-06-10 10:40:32

标签: tensorflow deep-learning

我有一个超过150万张图像的数据集,我必须将它们分类为62个类。我创建了两个numpy数组功能(png图像的路径)和标签(int标签)。现在我想使用opencv加载这些图像,但是在RAM中处理如此大的加载输入是低效的。

所以我也尝试使用tensorflow输入管道文档:

import tensorflow as tf

filename_queue = 
tf.train.string_input_producer(['batch1.csv','batch2.csv'])
reader = tf.TextLineReader(skip_header_lines=1)
key,value = reader.read(filename_queue)

record_defaults = [['1'],['1']]
paths, labels = tf.decode_csv(value, record_defaults=record_defaults)

features_path = tf.stack([paths])
labels = tf.stack([labels])

with tf.Session() as sess:
    coord = tf.train.Coordinator()
    #Start all QueueRunners added into the graph
    threads = tf.train.start_queue_runners(coord=coord)

    for _ in range(1):
        # d_features, d_labels = sess.run([features_path, labels])
        # print len(d_features), len(d_labels)

        min_after_dequeue = 5
        batch_size = 32
        capacity = 30
        #capacity = min_after_dequeue + 3 * batch_size

        example_batch, label_batch = tf.train.shuffle_batch(
            [features_path, labels], batch_size=batch_size, 
            capacity=capacity,
            min_after_dequeue=min_after_dequeue
        )
        print sess.run([example_batch])

但是当我运行时它会卡住(我尝试打印张量的形状,这是按照预期的方式进行的,但它不会打印我的一批功能)。

如果有人可以指导我创建批次和加载图像的更好方法,以后可以将其输入到张量流模型中,将会非常有用。

1 个答案:

答案 0 :(得分:0)

您要在创建队列运行器之前启动队列运行器(它们由tf.train.shuffle_batch创建)。

也就是说,基于队列的输入管道已被弃用,您应该切换到tf.data。