如何从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数组。
batch_x中的batch_y和ImageDataGenerator
都是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))