我发现很难理解flow_from_directory of ImageDataGenerator是如何工作的,我正在使用下面的代码为我的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幅负片的二值分类问题。所以我有数据集/训练文件夹,有2个子文件夹,每个子文件夹有20个图像。当我使用上面的图像生成器训练模型时,我可以看到dataset/train_transformed文件夹中保存了4160图像,并假定4160图像用于训练模型。
model.fit_generator(
train_generator,
steps_per_epoch=1000 // batch_size,
epochs=5,
validation_data=validation_generator,
validation_steps=100 // batch_size)据我所知,不。每个时代的样本数= batch_size X steps_per_epoch
我的steps_per_epoch = 1000/16 = 62,
#每个时代的样本应为62x16= 992
每个时期的No设置为5,所以生成的图像总数应该是992 x5= 4960。
生成的图像都是随机的,具有相同的超参数。
只是需要对上面的配置做一个解释。
发布于 2019-01-29 12:22:00
你的计算似乎是正确的。还要注意,flow_from_directory有一个shuffle参数(默认情况下为true)。这意味着生成器将在每个时期(batch_size times steps_per_epoch)产生992幅图像,但它们出现的顺序因时代而异。
https://stackoverflow.com/questions/54414885
复制相似问题