如何使用Tensorflow和预训练模型从预训练的卷积网络创建基础模型?

Tensorflow是Google提供的一种机器学习框架。它是一个开放源代码框架,可与Python结合使用,以实现算法,深度学习应用程序等等。它用于研究和生产目的。

它具有优化技术,可帮助快速执行复杂的数学运算。

这是因为它使用了NumPy和多维数组。这些多维数组也称为“张量”。该框架支持使用深度神经网络。它具有高度的可扩展性,并附带了许多流行的数据集。它使用GPU计算并自动进行资源管理。它带有大量的机器学习库,并且得到了良好的支持和记录。该框架具有运行深度神经网络模型,对其进行训练以及创建可预测各个数据集相关特征的应用程序的能力。

可以使用下面的代码行在Windows上安装'tensorflow'软件包-

pip install tensorflow

Tensor是TensorFlow中使用的数据结构。它有助于连接流程图中的边缘。该流程图称为“数据流程图”。张量不过是多维数组或列表。

Keras在希腊语中的意思是“号角”。Keras被开发为ONEIROS(开放式神经电子智能机器人操作系统)项目研究的一部分。Keras是使用Python编写的深度学习API。它是一个高级API,具有可帮助解决机器学习问题的高效接口。

它在Tensorflow框架之上运行。它旨在帮助快速进行实验。它提供了在开发和封装机器学习解决方案中必不可少的基本抽象和构建块。

它具有高度的可扩展性,并具有跨平台功能。这意味着Keras可以在TPU或GPU集群上运行。Keras模型也可以导出为在Web浏览器或手机中运行。

Keras已经存在于Tensorflow软件包中。可以使用下面的代码行进行访问。

import tensorflow
from tensorflow import keras

我们将使用Keras Sequential API,它有助于构建用于与简单的层堆栈配合使用的顺序模型,其中每一层都具有一个输入张量和一个输出张量。

包含至少一层的神经网络称为卷积层。卷积神经网络通常由以下提到的层的某种组合组成-

  • 卷积层

  • 汇聚层

  • 致密层

卷积神经网络已用于为特定类型的问题(例如图像识别)产生出色的结果。

我们正在使用Google合作实验室来运行以下代码。Google Colab或Colaboratory可以帮助通过浏览器运行Python代码,并且需要零配置和对GPU(图形处理单元)的免费访问。合作已建立在Jupyter Notebook的基础上。

我们将了解如何借助来自预训练网络的转移学习对猫和狗的图像进行分类。

预先训练的模型是一个保存的网络,该网络先前会在大型数据集上进行训练。这个大数据集将是大规模的图像分类任务。可以按需使用预训练的模型,也可以根据需求和模型对它进行定制,并进行迁移学习。

用于图像分类的转移学习背后的直觉是,如果在大型通用数据集上训练模型,则该模型可以有效地用作视觉世界的通用模型。它将学习到功能图,这意味着用户不必通过在大型数据集上训练大型模型而从头开始。

定制模型可以通过两种方式进行预训练-

特征提取-先前网络学习到的表示可用于从新样本中提取有意义的特征。可以添加一个新分类器,该分类器将从头开始进行训练,该分类器将位于预训练模型的顶部。这可用于重新调整先前为数据集学习的特征图的用途。

整个模型不需要重新训练。基本卷积网络将已经具有通常用于对图片进行分类的功能。

但是预训练模型的最终分类部分是针对原始分类任务的。这意味着它特定于训练模型的一组课程。

微调-取消冻结已冻结模型基础的某些顶层,并将新添加的分类器层以及基础模型的最后层一起训练。这将允许用户“微调”基本模型中的高阶特征表示。这有助于使模型与特定任务更加相关。

示例

print("Creating base model from pre-trained MobileNet V2")
IMG_SHAPE = IMG_SIZE + (3,)
base_model = tf.keras.applications.MobileNetV2(input_shape=IMG_SHAPE, include_top=False,
weights='imagenet')

代码信用-https://www.tensorflow.org/tutorials/images/transfer_learning

输出结果

Creating base model from pre-trained MobileNet V2
Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/mobilenet_v2/mobilenet_v2_weights_tf_dim_ordering_tf_kernels_1.0_160_no_top.h5
9412608/9406464 [==============================] - 0s 0us/step

解释

  • 使用基本模型MobileNet V2。

  • 在ImageNet数据集上进行了预训练,该图像数据集是一个大型数据集,包含140万个图像和1000个类别。

  • ImageNet是一个研究训练数据集,具有诸如菠萝蜜和注射器之类的许多类别。

  • 该知识基础有助于从猫和狗数据集中对猫和狗进行分类。

  • 需要选择需要用于特征提取的MobileNet V2层。

  • 最后一个分类层不是很有用。

  • 但是我们依赖于扁平化操作之前的最后一层。

  • 它被称为“瓶颈层”。

  • 与顶层相比,瓶颈层功能保留了更多通用性。

  • 实例化了MobileNet V2模型。它预装了ImageNet上经过训练的砝码。通过指定include_top = False,将加载网络,该网络不包括顶部的分类层。

  • 这是特征提取的理想选择。

猜你喜欢