我有一个超过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])
但是当我运行时它会卡住(我尝试打印张量的形状,这是按照预期的方式进行的,但它不会打印我的一批功能)。
如果有人可以指导我创建批次和加载图像的更好方法,以后可以将其输入到张量流模型中,将会非常有用。
答案 0 :(得分:0)
您要在创建队列运行器之前启动队列运行器(它们由tf.train.shuffle_batch创建)。
也就是说,基于队列的输入管道已被弃用,您应该切换到tf.data。