为了账号安全,请及时绑定邮箱和手机立即绑定

Tensorflow输入管道用于生成批处理的问题

Tensorflow输入管道用于生成批处理的问题

慕雪6442864 2021-04-28 09:10:13
我目前正在尝试使用张量流队列编写一个Tensorflow数据输入管道。我的数据由jpg图像,三个通道(RGB)组成,并且是128x128像素。我当前的问题正在运行我的image_batch操作,因为该操作一直暂停,我不确定为什么。以下是用于构建输入管道的代码。我正在使用三个主要功能:read_my_file_format 接受filename_queue并尝试加载文件并调整其大小tensorflow_queue获取对象列表并生成张量流FIFO队列。然后将队列添加到队列运行器,并添加到tf.train.add_queue_runnershuffle_queue_batch 用于返回获取一批图像和标签的操作。下面是我的代码。def read_my_file_format(filename_queue):   reader = tf.WholeFileReader()   filename, image_string = reader.read(filename_queue)   image = tf.image.decode_jpeg(image_string, channels=3)   image = tf.image.resize_images(image, size=[256, 256])   return imagedef tensorflow_queue(lst, dtype, capacity=32):    tensor = tf.convert_to_tensor(lst, dtype=dtype)    fq = tf.FIFOQueue(capacity=capacity, dtypes=dtype, shapes=(()))    fq_enqueue_op = fq.enqueue_many([tensor])    tf.train.add_queue_runner(tf.train.QueueRunner(fq, [fq_enqueue_op]*1))    return fqdef shuffle_queue_batch(image, label, batch_size, capacity=32, min_after_dequeue=10, threads=1):    tensor_list = [image, label]    dtypes = [tf.float32, tf.int32]    shapes = [image.get_shape(), label.get_shape()]    rand_shuff_queue = tf.RandomShuffleQueue(                                capacity=capacity,                                min_after_dequeue=min_after_dequeue,                                dtypes=dtypes,                                shapes=shapes                                )    rand_shuff_enqueue_op = rand_shuff_queue.enqueue(tensor_list)    tf.train.add_queue_runner(tf.train.QueueRunner(rand_shuff_queue, [rand_shuff_enqueue_op] * threads))    image_batch, label_batch = rand_shuff_queue.dequeue_many(batch_size)    return image_batch, label_batch
查看完整描述

2 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

我强烈建议您将输入管道从tf.train队列切换到tf.data。队列输入管道效率低下且难以维护。


查看完整回答
反对 回复 2021-05-11
  • 2 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信