我发现很难理解 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 文件夹,其中有 2 个子文件夹,每个子文件夹有 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的样本数= batch_size X steps_per_epoch
正如我的 steps_per_epoch = 1000/16 = 62,
#每个 epoch 中的样本应该是 62 x 16 = 992
No of epochs 设置为 5,因此生成的图像总数应为 992 x 5 = 4960。
并且没有生成的图像是随机的具有相同的超参数。
只是需要对上述配置进行解释。
最佳答案
您的计算似乎是正确的。还要注意 flow_from_directory
有一个 shuffle
参数(默认为 true)。这意味着生成器将在每个时期生成 992 张图像(batch_size
乘以 steps_per_epoch
),但它们出现的顺序对于每个时期都不同。
关于python - Keras 图像数据增强,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54414885/