使用数据增强
-
过拟合的原因是学习样本太少,导致无法训练出能够泛化到新数据的模型。如果拥有无限的数据,那么模型就能够观察到数据分布的所有内容,这样就永远不会过拟合。数据增强是从现有的训练样本中生成更多的训练数据,其方法是利用多种能够生成可信图像的随机变换来增加样本。
-
Keras中可以通过
ImageDataGenerator
实现对样本的随机变换(以MNIST为例) -
ImageDataGenerator的参数说明:
参考博客:
1.keras的图像预处理全攻略(二)—— ImageDataGenerator 类
2.keras的图像预处理全攻略(四)—— ImageDataGenerator 类实践案例
3.【Tool】Keras 基础学习 III ImageDataGenerator() -
代码:
import numpy as np
from matplotlib import pyplot as plt
from keras.datasets import mnist
from keras.preprocessing.image import ImageDataGenerator
# 1.加载数据集
(x_train, y_train),(x_test, y_test) = mnist.load_data()
# 2.构造ImageDataGenerator类的对象,通过参数指定要进行处理项目
datagen = ImageDataGenerator(
featurewise_center=True, # 对输入的图片每个通道减去每个通道对应均值。
featurewise_std_normalization=True,
rotation_range=10, # 随机旋转的度数范围。
width_shift_range=0.2,
height_shift_range=0.2,
# horizontal_flip=True # 随机水平翻转。
)
# 3.对需要处理的数据进行fit
x_test_test = np.expand_dims(x_test, axis = 3)
datagen.fit(x_test_test)
# 4.使用.flow方法构造Iterator,
data_iter = datagen.flow(x_test_test