【发布时间】:2019-11-27 06:40:57
【问题描述】:
我想使用 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)
【问题讨论】:
标签: python keras data-augmentation