在tensorflow中使用图像和标签创建输入数据管道

问题描述

我通常使用keras,但我使用的是tensorflow-compression,它是用tensorflow 1.15编写的。该代码着重于图像压缩,因此仅将图像作为输入。但是,我想修改输入数据管道以接受图像和它们对应的一键编码类标签,以尝试对其方法进行修改。这是当前代码

# Create input data pipeline.
  with tf.device("/cpu:0"):
    train_files = glob.glob(args.train_glob)
    if not train_files:
      raise RuntimeError(
          "No training images found with glob '{}'.".format(args.train_glob))
    train_dataset = tf.data.Dataset.from_tensor_slices(train_files)
    train_dataset = train_dataset.shuffle(buffer_size=len(train_files)).repeat()
    train_dataset = train_dataset.map(
        read_png,num_parallel_calls=args.preprocess_threads)
    train_dataset = train_dataset.map(
        lambda x: tf.random_crop(x,(args.patchsize,args.patchsize,3)))
    train_dataset = train_dataset.batch(args.batchsize)
    train_dataset = train_dataset.prefetch(32)

  # Get training patch from dataset.
  x = train_dataset.make_one_shot_iterator().get_next()

这是我对如何进行更改以也接受标签作为输入的想法,尽管我对tensorflow尤其是输入数据管道还不够熟悉,无法知道这是否正确。图片标签需要正确配对,因此处理图片是否可能首先弄乱了顺序?

# Create input data pipeline.
with tf.device("/cpu:0"):
    train_files = glob.glob(args.train_glob)
    
    if not train_files:
        raise RuntimeError(
          "No training images found with glob '{}'.".format(args.train_glob))
    
    # process images first and then add label
    image_dataset = tf.data.Dataset.from_tensor_slices(train_files)
    image_dataset = image_dataset.map(
        read_png,num_parallel_calls=args.preprocess_threads)
    image_dataset = image_dataset.map(
        lambda x: tf.random_crop(x,3)))
    
    # assume labels have been loaded and one hot encoded
    label_dataset = tf.data.Dataset.from_tensor_slices(labels) 
    train_dataset = tf.data.Dataset.zip((image_dataset,label_dataset))
    train_dataset = train_dataset.shuffle(buffer_size=len(train_files)).repeat()
    train_dataset = train_dataset.batch(args.batchsize)
    train_dataset = train_dataset.prefetch(32)

    # Get training patch from dataset.
    x,y = train_dataset.make_one_shot_iterator().get_next()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)