如何在TensorFlow和Python中使用数据增强来减少过拟合?


通过添加额外的训练数据,数据增强可以用来减少过拟合。这是通过创建一个使用“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://tensorflowcn.cn/tutorials/images/classification

输出

Using data augmentation to eliminate overfitting

解释

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

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

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

更新于: 2021年2月22日

253 次查看

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告