对于我的TensorFlow培训管道,我使用包含图像文件的tf.FIFOQueue
来阅读,并使用tf.train.batch
来获取一批预处理图像。这很好用。
出于调试目的,我现在正在寻找一种方法来获取从dequeue_many
中的tf.train.batch
操作中获取的文件名。
在我的相应代码下面。所以我试图从批处理操作中出列的str
中获取tf.string
或filename_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'?
答案 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)