Keras2 ImageDataGenerator 还是 TensorFlow tf.data?

Flo*_*Man 9 python keras tensorflow keras-2

随着 Keras2 即将在 TensorFlow 和 TensorFlow 2.0 中实现,您应该将 KerasImageDataGenerator 与 eg 一起使用,flow_from_directory还是现在tf.data也可以与fit_genearatorKeras一起使用的 TensorFlow ?

这两种方法是否会因服务于不同的目的而占有一席之地,还是会tf.data成为未来的新方法而 Keras 生成器将被弃用?

谢谢,我想走这条路,让我在这个快速发展的领域保持更长时间的了解。

Tim*_*lin 13

除了自定义定义的 Python 生成器,您还可以将ImageDataGeneratorfrom Keras包装在里面tf.data.

以下片段摘自 TensorFlow 2.0 文档。

img_gen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255, rotation_range=20)
ds = tf.data.Dataset.from_generator(
    img_gen.flow_from_directory, args=[flowers], 
    output_types=(tf.float32, tf.float32), 
    output_shapes = ([32,256,256,3],[32,5])
)
Run Code Online (Sandbox Code Playgroud)

因此,仍然可以使用典型的 Keras ImageDataGenerator,您只需要将其包装成tf.data.Dataset上面的样子。

  • 这真是两全其美! (3认同)

Sha*_*rky 10

自发布以来,TensorFlow Dataset API 是为任何在 TensorFlow 后端构建的模型(Keras 和低级 TensorFlow)构建输入管道的默认推荐方式。在 TF 1.xx 以后的版本中,它可以直接在tf.keras.Model.fit方法中使用

model.fit(dataset, epochs)
Run Code Online (Sandbox Code Playgroud)

这对快速原型制作都有好处,

dataset = tf.data.Dataset.from_tensor_slices((train, test))
dataset = dataset.shuffle().repeat().batch()
Run Code Online (Sandbox Code Playgroud)

并用于构建复杂的高性能 ETL 管道 4. 升级您的数据输入管道,更多信息请点击此处https://www.tensorflow.org/guide/performance/datasets

根据官方文档,在 TF 2.0 中,它也将是将数据输入模型的默认方式。https://www.tensorflow.org/alpha/guide/migration_guide

默认情况下,即将发布的 TensorFlow 版本将被急切地执行,数据集对象将变得可迭代并且更易于使用。


I.A*_*Guy 1

2022 年更新

在访问ImageDataGenerator文档时,现在有一条弃用消息,内容如下:

已弃用: tf.keras.preprocessing.image.ImageDataGenerator不建议用于新代码。更喜欢使用预处理层加载图像并tf.keras.utils.image_dataset_from_directory转换输出。有关更多信息,请参阅加载图像增强图像tf.data.Dataset的教程,以及预处理层指南