所以我正在构建一个图像分类器,并使用 Keras 的 ImageDataGenerator 类和以下参数:
ImageDataGenerator(
rescale=1./255, rotation_range=40, width_shift_range=0.2,
height_shift_range=0.2, shear_range=0.2, zoom_range=0.2,
horizontal_flip=True, fill_mode='nearest'
)
然后,我使用以下代码将生成器的这个实例用于我的训练数据:
train_datagen.flow_from_dataframe(
dataframe=binary_df, directory='../train', x_col='Image', y_col='Label',
target_size=(target_size[0],target_size[1]),
batch_size=batch_size, class_mode='categorical',interpolation='nearest'
)
最后,这个生成器被直接传递给 Keras 中的“fit_generator”函数来训练我的模型,如下所示:
binary_model.fit_generator(
binary_train_generator, epochs=100, shuffle=True)
我的问题是,生成器是在创建生成器时自动增加指定的数据(水平翻转、旋转等)并在训练模型时传递它,还是我需要先使用生成器来创建新数据,以及然后将其传递给我的“fit_generator”函数?
谢谢!
请参阅ImageDataGenerator 文档,尤其是您正在使用的函数flow_from_dataframe。
引用文档:
获取目录的路径并生成批量增强数据。
因此,它将为您生成模型的增强数据。
顺便说一句:在创建生成器时不会增加数据,而是在输入模型时逐批增加。
编辑:图像数量(训练数据点)保持不变,引用文档:
水平翻转:布尔值。水平随机翻转输入。
你的一些输入是随机翻转的,这不像是输入两个单独的图像(一个翻转,另一个在原始版本中,未增强版本)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句