随着Keras2即将在TensorFlow和TensorFlow 2.0中实施,您是否应该将Keras ImageDataGenerator
与TensorFlow中的flow_from_directory
或tf.data
配合使用,后者现在也可以与Keras的fit_genearator
配合使用?
这两种方法是否会因为服务于不同的目的而有各自的位置,或者tf.data
是否会成为未来的新方法,Keras生成器是否会在未来被弃用?
谢谢,我想采取的道路,使我跟上最新的一点更长的时间在这个快速发展的领域。
4条答案
按热度按时间6ie5vjzr1#
除了自定义的Python生成器,你还可以将来自Keras的
ImageDataGenerator
Package 在tf.data
中。TensorFlow >= 2.10
(一切都与tf.data.Dataset()
有关)TensorFlow <= 2.9
(其中可能已显示弃用警告)以下代码片段摘自TensorFlow 2.0文档。因此,仍然可以使用典型的Keras
ImageDataGenerator
,您只需要像上面一样将其 Package 成tf.data.Dataset
。axkjgtzd2#
自发布以来,TensorFlow数据集API是默认推荐的方式,可用于为TensorFlow后端构建的任何模型构建输入管道,包括Keras和低级TensorFlow。在TF 1.xx的后续版本中,它可直接用于
tf.keras.Model.fit
方法,如这对于快速原型制作
用于构建复杂、高性能的ETL管道4.升级您的数据输入管道,更多信息请点击此处https://www.tensorflow.org/guide/performance/datasets
根据官方文档,在TF 2.0中,这也将是默认的向模型输入数据的方式。https://www.tensorflow.org/alpha/guide/migration_guide
默认情况下,即将发布的TensorFlow版本将被急切地执行,数据集对象将变为可迭代的,并且将更易于使用。
mwngjboj3#
对我来说,我更喜欢用
yield
构建一个生成器:然后创建生成器并将其输入到
model.fit_generator
,它将工作。你可以像这样随机选择数据,也可以使用一些重复的方法。
虽然代码很粗糙,但很容易修改,因此可以生成复杂的批处理。
请注意,这是一种使用Keras2而非TensorFlow 2.0为TF 1.X生成的方法。
62lalag44#
2022更新
访问
ImageDataGenerator
documentation时,现在会显示一条过时消息,内容如下:**已弃用:**不建议对新代码使用
tf.keras.preprocessing.image.ImageDataGenerator
。建议使用tf.keras.utils.image_dataset_from_directory
加载图像,并使用预处理层转换输出tf.data.Dataset
。有关详细信息,请参阅loading images与augmenting images的教程,以及preprocessing layer guide。