我发现很难理解 ImageDataGenerator 的 flow_from_directory 如何工作,我正在使用以下代码增强图像数据以用于我的 CNN 模型,因为可用的训练图像数量非常少。
batch_size = 16
from keras.preprocessing.image import ImageDataGenerator
train_transformed = 'dataset/train_transformed'
train_datagen = ImageDataGenerator(
rescale=1./255,
horizontal_flip=True,
fill_mode='nearest')
train_generator = train_datagen.flow_from_directory(
'dataset/train',
target_size=(150, 150),
batch_size=batch_size,
class_mode='binary',
save_to_dir=train_transformed,
save_prefix='train_aug',
save_format='png')
这是一个二分分类问题,涉及20张正面和20张负面图片。因此我有一个包含两个子文件夹的dataset/train文件夹,每个子文件夹中都有20张图像。使用上述图像生成器训练模型后,可以看到4160张图像被保存在dataset/train_transformed文件夹中,并且假设使用4160张图像进行模型训练。
model.fit_generator(
train_generator,
steps_per_epoch=1000 // batch_size,
epochs=5,
validation_data=validation_generator,
validation_steps=100 // batch_size)
根据我的理解,每个epoch中的样本数=批量大小X每个epoch的步数。 由于我的steps_per_epoch= 1000/16 = 62,所以每个epoch中的样本数应为62 x 16 = 992。 设置了5个epochs,因此总生成的图像数量应为992 x 5 = 4960。 生成的图像数量是随机的,但使用相同的超参数。 只需要对上述配置进行解释。