如何使用Tensorflow和Python进行数据增强以减少过拟合?

如何使用Tensorflow和Python进行数据增强以减少过拟合?

通过添加额外的训练数据,可以使用数据增强(Data Augmentation)来减少过拟合风险。这可以通过创建一个使用“RandomFlip”层的序贯模型来实现。

我们将使用Keras Sequential API,在构建一个顺序模型时非常有用。它用于处理单个层的普通堆栈,其中每个层恰好具有一个输入张量和一个输出张量。

至少包含一个层的神经网络被称为卷积层。我们可以使用卷积神经网络进行建立的学习模型。

使用tf.keras.Sequential模型创建一个图像分类器,使用preprocessing.image_dataset_from_directory加载数据。数据可以高效地从磁盘上加载。应用数据增强和丢弃等技术减少过拟合。数据集中包含3700张花的图片。此数据集包括5个子目录,每个类别一个子目录,它们是:

雏菊(daisy),蒲公英(dandelion),玫瑰(roses),向日葵(sunflowers)和郁金香(tulips)。

我们使用谷歌Colaboratory运行以下代码。Google Colab或Colaboratory可以在浏览器中运行Python代码,不需要任何配置,并且免费访问GPU(图形处理器)。Colaboratory是基于Jupyter Notebook构建的。

当训练示例数量很小时,模型会从训练示例中学习噪声或不需要的细节,这对新示例的性能产生负面影响。

由于过度拟合,模型将无法在新数据集上进行良好的泛化。有许多方法可以避免出现过拟合的现象。我们将使用数据增强方法来克服过拟合, 从现有的样例中生成更多的训练数据。增强数据是通过执行形似于输入数据的随机变换来创建的,这有助于将模型暴露于数据的更多方面,从而帮助模型更好地进行泛化。以下是一个示例:

更多Python相关文章,请阅读:Python 教程

示例

print("使用数据增强来消除过拟合")
data_augmentation = keras.Sequential(
   [
      layers.experimental.preprocessing.RandomFlip("horizontal",input_shape=(img_height,
      img_width,3)),
      layers.experimental.preprocessing.RandomRotation(0.1),
      layers.experimental.preprocessing.RandomZoom(0.1),
   ]
)

代码来源 – https://www.tensorflow.org/tutorials/images/classification

输出

使用数据增强来消除过拟合

解释

  • 可以使用tf.keras.layers.experimental.preprocessing中的图层实现数据增强。

  • 这些层与其他层一样包含在模型中,并在GPU上运行。

  • 这样可以消除或减少过拟合。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程