我想使用 Keras ImageDataGenerator 进行数据增强。为此,我必须使用我的训练数据作为参数在实例化的 ImageDataGenerator 对象上调用 .fit() 函数,如下所示。
image_datagen = ImageDataGenerator(featurewise_center=True, rotation_range=90)
image_datagen.fit(X_train, augment=True)
train_generator = image_datagen.flow_from_directory('data/images')
model.fit_generator(train_generator, steps_per_epoch=2000, epochs=50)
但是,我的训练数据集太大而无法立即加载到内存中。因此,我想使用我的训练数据的子集分几个步骤来拟合生成器。
有没有办法做到这一点?
我想到的一个潜在解决方案是使用自定义生成器函数加载我的训练数据批次,并在一个循环中多次拟合图像生成器。但是,我不确定 ImageDataGenerator 的拟合函数是否可以以这种方式使用,因为它可能会在每种拟合方法上重置。
作为它如何工作的示例:
def custom_train_generator():
# Code loading training data subsets X_batch
yield X_batch
image_datagen = ImageDataGenerator(featurewise_center=True, rotation_range=90)
gen = custom_train_generator()
for batch in gen:
image_datagen.fit(batch, augment=True)
train_generator = image_datagen.flow_from_directory('data/images')
model.fit_generator(train_generator, steps_per_epoch=2000, epochs=50)