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

tensorflowpythonserver side programmingprogramming

可以通过添加额外的训练数据来使用增强来减少过度拟合。这是通过创建使用"RandomFlip"的顺序模型来实现的层。

阅读更多: 什么是 TensorFlow,以及 Keras 如何与 TensorFlow 配合使用来创建神经网络?

我们将使用 Keras Sequential API,它有助于构建用于处理普通层堆栈的顺序模型,其中每个层都有一个输入张量和一个输出张量。

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

使用 keras.Sequential 模型创建图像分类器,并使用 preprocessing.image_dataset_from_directory 加载数据。数据有效地从磁盘加载。识别过度拟合并应用技术来缓解它。这些技术包括数据增强和 dropout。有 3700 朵花的图像。该数据集包含 5 个子目录,每个类有一个子目录。它们分别是:

雏菊、蒲公英、玫瑰、向日葵和郁金香。

我们使用 Google Colaboratory 来运行以下代码。Google Colab 或 Colaboratory 有助于在浏览器上运行 Python 代码,并且无需配置,可以免费访问 GPU(图形处理单元)。Colaboratory 建立在 Jupyter Notebook 之上。

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

由于过度拟合,模型将无法在新数据集上很好地概括。有很多方法可以避免过度拟合。我们将使用数据增强来克服过度拟合。数据增强通过随机变换增强现有示例,从而生成额外的训练数据,从而产生看起来可信的图像。

这有助于让模型接触数据的更多方面,从而帮助模型更好地泛化。以下是一个例子:

示例

print("Using data augmentation to eliminate overfitting")
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

输出

Using data augmentation to eliminate overfitting

解释

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

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

  • 这样做是为了消除或减少过度拟合。


相关文章