【问题标题】:data preprocessing: keras layers vs tf.image.resize数据预处理:keras 层 vs tf.image.resize
【发布时间】:2020-11-26 15:57:26
【问题描述】:

我想在 tensorflow 2(版本 2.3.0)中预处理来自 'oxford_flowers102' 数据集的图像以训练初始 v3 网络。我找到了两种调整图像大小的方法,两种方法都有效,似乎都产生了相同的输出。我不明白哪种解决方案更适合我的任务。你能解释一下哪种方式更好用吗?

  1. 使用 tf.image.resize

   IMAGE_RES = 229
   dataset, dataset_info = tfds.load('oxford_flowers102', with_info=True, as_supervised=True)
   dataset_info
   test_set, training_set, validation_set = dataset['test'], dataset['train'], dataset['validation']

   get_label_name = dataset_info.features['label'].int2str
   image, label = next(iter(training_set))
   image = tf.image.resize(image, (IMAGE_RES, IMAGE_RES)) / 255.0
   _ = plt.imshow(image)
   _ = plt.title(get_label_name(label))
   plt.show()

  1. 带有 keras 层
    IMAGE_RES = 229
    dataset, dataset_info = tfds.load('oxford_flowers102', with_info=True, as_supervised=True)
    dataset_info
    test_set, training_set, validation_set = dataset['test'], dataset['train'], dataset['validation']
    get_label_name = dataset_info.features['label'].int2str



    resize_and_rescale = tf.keras.Sequential([
        layers.experimental.preprocessing.Resizing(IMAGE_RES, IMAGE_RES),
        layers.experimental.preprocessing.Rescaling(1. / 255)
    ])

    image, label = next(iter(training_set))
    _ = plt.imshow(image)
    _ = plt.title(get_label_name(label))

    result = resize_and_rescale(image)
    _ = plt.imshow(result)
    plt.show()
 

【问题讨论】:

    标签: python tensorflow keras


    【解决方案1】:

    技术上

    调整层大小 tf.keras.layers.Resizing 使用 tf.image.resize()“幕后”函数 (proof)。

    实际

    调整大小层允许在模型中内置预处理,以便在输入图像数据输入模型时对其进行预处理。 tf.image.resize() 函数非常适合 tf.data.Dataset.map() 方法,它在加载图像时对其进行实时预处理。

    相关回答:https://stackoverflow.com/a/66575616/7204581

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 1970-01-01
      • 2018-08-07
      相关资源
      最近更新 更多