Keras中图片数据预处理步骤总结

将硬盘中的图片文件预处理后生成浮点数张量,步骤如下:

(1)读取图像文件

(2)将文件解码为RGB像素网格

(3)将像素网格转换为浮点数张量

(4)将像素值(0-255)缩放到(0-1)区间

在Keras中,以上步骤可通过ImageDataGenerator类完成,该类位于keras.preprocessing.image模块中,ImageDataGenerator()是keras.preprocessing.image模块中的图片生成器,同时也可以在batch中对数据进行增强,扩充数据集大小,增强模型的泛化能力。比如进行旋转,变形,归一化等等。如将图像缩放为1/255:

gen = ImageDataGenerator(rescale=1/255)

完成图像处理后,通过ImageDataGenerator对象可得到增强数据生成器,生成小批量梯度下降所需的数据:

generator = gen.flow_from_directory(图片来源路径,目标矩阵大小,批量大小,类别描述方式)

注意:类别描述方式参数是class_mode,可选binary:二分类即标签用01描述,损失函数用binary_crossentropy;categorical:多分类即标签用one-hot型描述,损失函数用categorical_crossentropy,sparse:多分类标签可为数字,损失函数用sparse_categorical_crossentropy

接下来利用生成器可以进行训练了:

history = model.fit_generator(generator,steps_per_epoch,epochs,validation_data,validation_steps)

注意,steps_per_epoch是指按生成器每次生成的数据条数,要将数据全部训练一次需要多少批,比如全部数据1000条,生成器每次20条,则steps_per_epoch为50;epochs指全部训练的次数,后面的validation_data是指验证集生成器,validation_steps是指验证集全部训练一次需要多少批。

你可能感兴趣的:(卷积神经网络,keras,预处理,卷积神经网络)