关于tf.keras.preprocessing.image.ImageDataGenerator.flow_from_directory中的python:tf.data.Dataset?

tf.data.Dataset from tf.keras.preprocessing.image.ImageDataGenerator.flow_from_directory?

如何从tf.keras.preprocessing.image.ImageDataGenerator.flow_from_directory创建tf.data.Dataset

我正在考虑tf.data.Dataset.from_generator,但是在给定返回类型的情况下,尚不清楚如何为其获取output_types关键字参数:

A DirectoryIterator yielding tuples of (x, y) where x is a numpy array containing a batch of images with shape (batch_size, *target_size, channels) and y is a numpy array of corresponding labels.


ImageDataGenerator中的batch_x和batch_y均为K.floatx()类型,因此默认情况下必须为tf.float32

在tf.data API中如何使用Keras生成器已经讨论了类似的问题。让我从那里复制粘贴答案:

1
2
3
4
5
6
7
def make_generator():
    train_datagen = ImageDataGenerator(rescale=1. / 255)
    train_generator =
    train_datagen.flow_from_directory(train_dataset_folder,target_size=(224, 224), class_mode='categorical', batch_size=32)
    return train_generator

train_dataset = tf.data.Dataset.from_generator(make_generator,(tf.float32, tf.float32))

作者在图范围方面面临另一个问题,但我想它与您的问题无关。

或作为一个衬纸:

1
2
tf.data.Dataset.from_generator(lambda:
    ImageDataGenerator().flow_from_directory('folder_path'),(tf.float32, tf.float32))