keras图片生成器ImageDataGenerator
2019-08-04 本文已影响0人
poteman
深度学习模型中很多数据是通过batch形式来进行训练的,这需要创建一个batch生成器。
ImageDataGenerator通过实时数据增强生成张量图像数据批次。数据将不断循环(按批次)。
- 使用.flow()的例子
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
y_train = np_utils.to_categorical(y_train, num_classes)
y_test = np_utils.to_categorical(y_test, num_classes)
datagen = ImageDataGenerator(
featurewise_center=True,
featurewise_std_normalization=True,
rotation_range=20,
width_shift_range=0.2,
height_shift_range=0.2,
horizontal_flip=True)
# compute quantities required for featurewise normalization
# (std, mean, and principal components if ZCA whitening is applied)
datagen.fit(x_train)
# fit_generator, evaluate_generator, and predict_generator.
# fits the model on batches with real-time data augmentation:
model.fit_generator(datagen.flow(x_train, y_train, batch_size=32),
steps_per_epoch=len(x_train), epochs=epochs)
- 使用.flow_from_directory(directory)的例子
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
'data/train',
target_size=(150, 150),
batch_size=32,
class_mode='binary')
validation_generator = test_datagen.flow_from_directory(
'data/validation',
target_size=(150, 150),
batch_size=32,
class_mode='binary')
model.fit_generator(
train_generator,
steps_per_epoch=2000,
epochs=50,
validation_data=validation_generator,
validation_steps=800)
- 参数解释
1.steps_per_epoch: 整数,当生成器返回steps_per_epoch次数据时计一个epoch结束,执行下一个epoch。
2.verbose:日志显示,0为不在标准输出流输出日志信息,1为输出进度条记录,2为每个epoch输出一行记录
3.flow_from_directory中,类的列表将自动从 directory 下的 子目录名称/结构 中推断出来,其中每个子目录都将被作为不同的类(类名将按 字典序 映射到标签的索引)
【参考文献】
1.keras官网: 图片生成器ImageDataGenerator
2.Keras Image Data Augmentation 详解