来自tf.keras.preprocessing.image.ImageDataGenerator.flow_from_directory的tf.data.Dataset?

问题描述 投票:3回答:1

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

我正在考虑tf.data.Dataset.from_generator,但目前还不清楚如何获得output_types关键字参数,给定返回类型:

DirectoryIterator产生(x, y)的元组,其中x是一个numpy数组,包含一批形状为(batch_size, *target_size, channels)y的图像,是一个相应标签的numpy数组。

python numpy tensorflow keras marshalling
1个回答
2
投票

batch_x中的batch_yImageDataGenerator都是K.floatx()类型,所以默认情况下必须是tf.float32

How to use Keras generator with tf.data API已经讨论过类似的问题。让我从那里复制粘贴答案:

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))

作者面对图表范围的另一个问题,但我想这与您的问题无关。

或者作为一个班轮:

tf.data.Dataset.from_generator(lambda:
    ImageDataGenerator().flow_from_directory('folder_path'),(tf.float32, tf.float32))
© www.soinside.com 2019 - 2024. All rights reserved.