tf.train.batch - 从dequeue_many操作中获取项目

时间:2017-08-16 08:58:14

标签: tensorflow

对于我的TensorFlow培训管道,我使用包含图像文件的tf.FIFOQueue来阅读,并使用tf.train.batch来获取一批预处理图像。这很好用。

出于调试目的,我现在正在寻找一种方法来获取从dequeue_many中的tf.train.batch操作中获取的文件名。

在我的相应代码下面。所以我试图从批处理操作中出列的str中获取tf.stringfilename_queue个对象。如果有任何解决方案除了重写tf.train.batch之类的操作并自己执行dequeue_many操作之外?

filename_queue = tf.FIFOQueue(100000, [tf.string], shapes=[[]])

# ...

reader = tf.WholeFileReader()
_, image_raw = reader.read(filename_queue)
image = tf.image.decode_jpeg(image_raw, channels=3)

# Image preprocessing
image_preproc = ...

# Read a batch of preprocessing images from queue
image_batch = tf.train.batch([image_preproc], batch_size, num_threads=1)

# How to get the filenames corresponding to the images in 'image_batch'?

1 个答案:

答案 0 :(得分:1)

您应该可以从read返回的key获得一些内容。

filename_queue = tf.FIFOQueue(100000, [tf.string], shapes=[[]])

# ...

reader = tf.WholeFileReader()
image_key, image_raw = reader.read(filename_queue)
image = tf.image.decode_jpeg(image_raw, channels=3)

# Image preprocessing
image_preproc = ...

# Read a batch of preprocessing images from queue
image_batch, image_key_batch = tf.train.batch([image_preproc, image_key],
                                              batch_size, num_threads=1)