tensorflow的数据输入采用队列、线程的机制,这样可以使得系统更加轻量。如实例:
#获取数据的列表
image_list, label_list = read_image_label_list()
images = tf.convert_to_tensor(self.image_list, dtype=tf.string)
labels = tf.convert_to_tensor(self.label_list, dtype=tf.string)
#构建列表输出的队列
queue = tf.train.slice_input_producer([self.images, self.labels], shuffle=False)
#这里得到的queue实际是一个list,其中包含两个str,一个是image,一个是label,但是这些内容是通过队列输出的,所以在启动队列之前是没有输出的。
image, label = read_images_from_disk(queue )
image_batch, label_batch=tf.train.batch([image, label], batch_size)
#创建一个协调,用于协调多个线程同时开启关闭
coord = tf.train.Coordinator()
sess = tf.Session()
#开启队列,返回向队列输入数据的线程
threads = tf.train.start_queue_runners(coord=coord, sess=sess)
sess.run(image_batch, label_batch)