Python Keras图像数据扩充
我发现很难理解ImageDataGenerator的\u目录中的flow\u是如何工作的,我正在使用以下代码为我的CNN模型增加图像数据,因为没有可用的训练图像Python Keras图像数据扩充,python,keras,deep-learning,conv-neural-network,Python,Keras,Deep Learning,Conv Neural Network,我发现很难理解ImageDataGenerator的\u目录中的flow\u是如何工作的,我正在使用以下代码为我的CNN模型增加图像数据,因为没有可用的训练图像 batch_size = 16 from keras.preprocessing.image import ImageDataGenerator train_transformed = 'dataset/train_transformed' train_datagen = ImageDataGenerator( rescale=
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\u transformed文件夹中,并假设4160图像用于训练模型
model.fit_generator(
train_generator,
steps_per_epoch=1000 // batch_size,
epochs=5,
validation_data=validation_generator,
validation_steps=100 // batch_size)
据我了解,,
每个历元的样本数量=批次大小X每个历元的步骤数正如我的步骤_per_epoch=1000/16=62一样,每个epoch中的样本应该是62 x 16=992
“No of epochs”设置为5,因此生成的图像总数应992 x 5=4960。
在相同的超参数下,生成的图像不是随机的。
只需要对上述配置进行解释。您的计算似乎是正确的。还要注意,目录中的
flow\u
有一个shuffle
参数(默认为true)。这意味着生成器将在每个历元期间生成992个图像(batch\u size
timessteps\u per\u epoch
),但它们在每个历元中的显示顺序将不同 即使每个历元的显示顺序不同,最终用于训练的总图像应为4960,但情况并非如此。