Code前端首页关于Code前端联系我们

Python 安装 TensorFlow 2、tf.keras 以及深度学习模型的定义

terry 2年前 (2023-09-23) 阅读数 82 #AI人工智能

使用深度学习进行预测建模是现代开发人员必须了解的技能。

TensorFlow 是由 Google 开发和维护的首屈一指的开源深度学习框架。尽管直接使用 TensorFlow 可能具有挑战性,但现代的 tf.keras API 使得在 TensorFlow 项目中使用 Kongfun 变得简单易用。

使用 tf.keras,您只需几行代码即可设计、拟合、评估和使用深度学习模型来进行预测。它使想要完成任务的普通开发人员可以使用分类和回归预测模型等一般深度学习任务。

在本教程中,您将找到使用 tf.keras API 在 TensorFlow 中开发深度学习模型的分步指南。

完成本教程后,您将了解:

  • Keras 和 tf.keras 之间的区别以及如何安装和确认 TensorFlow 是否工作。
  • tf。 keras 模型的 5 步生命周期以及如何使用顺序 API 和函数式 API。
  • 如何使用 tf.keras 开发用于回归、分类和时间序列预测的 MLP、CNN 和 RNN 模型。
  • 如何使用 tf.keras API 的高级功能来检查和诊断模型。
  • 如何通过减少过度拟合和加快训练来提高 tf.keras 模型的性能。

这些例子很小。您可以在大约 60 分钟内完成本教程。

TensorFlow 教程概述

本教程旨在为您的深度学习项目提供 tf.keras 的完整介绍。

重点是使用 API 来完成常见的深度学习模型开发任务;我们不会深入研究深度学习的数学和理论。

学习Python深度学习的最好方法就是去做。

我设计的每个代码示例都使用最佳实践并使其独立,因此您可以将其直接复制并粘贴到您的项目中并根据您的特定需求进行调整。

教程分为五个部分。它们是:

  1. 安装 TensorFlow 和 tf.keras
    1. Keras 和 tf.keras 是什么? ?如何开发深度学习模型。如何适时停止训练并提早停止

可以使用Python进行深度学习

按照自己的节奏完成本教程。

你不必知道一切。您的目标是端到端完成本教程并获得结果。您不需要第一次就了解所有内容。列出您想问的问题。

你不需要先数学。数学是描述算法如何工作的一种紧凑方式,特别是线性代数、概率和统计工具。这些并不是您可以用来学习算法如何工作的唯一工具。您还可以使用代码并探索具有不同输入和输出的算法行为。了解数学不会告诉您选择哪种算法或如何最好地配置它。

您不需要知道算法是如何工作的。了解深度学习算法的局限性以及如何配置深度学习算法非常重要。但学习算法可以稍后再进行。你必须在很长一段时间内慢慢地建立这种算法知识。

您不必是一名 Python 程序员。如果您是 Python 语言的新手,它的语法可能很直观。就像其他语言一样,重点关注函数调用(例如 function())和赋值(例如 a = "b")。这将为您带来大部分帮助。您是一名开发人员,因此您知道如何快速学习语言的基础知识。刚开始,稍后再深入研究细节。

您不必是深度学习专家。稍后你可以了解不同算法的优点和局限性,稍后你可以阅读很多文章来深入了解深度学习项目的步骤以及使用交叉验证来评估模型能力的重要性。

1。安装 TensorFlow 和 tf.keras

在本节中,您将了解 tf.keras 是什么、如何安装它以及如何确认它安装正确。

1.1 Keras和keras是什么?

Keras 是一个用 Python 编写的开源深度学习库。

该项目由 Francois Chollet 于 2015 年启动。它很快成为开发人员流行的框架,甚至成为最受欢迎的深度学习库之一。

2015-2019 年期间,使用 TensorFlow、Theano 和 PyTorch 等数学库开发深度学习模型非常繁琐,需要数十甚至数百行代码才能完成最简单的任务。这些库的重点是研究、灵活性和速度,而不是易用性。

Keras 之所以受欢迎,是因为其 API 简单易用,只需几行代码就可以定义、调整和评估标准深度学习模型。

2019年,Google发布了新版本的TensorFlow深度学习库(TensorFlow 2),直接集成了Keras API,并将接口提升为平台上深度学习开发的标准或标准接口。

此集成通常称为 tf。 keras 接口或 API(“tf”是“TensorFlow ” 这就是所谓的开源。

  • 独立的Keras . 支持 TensorFlow、Theano 和 CNTK 后端的独立开源项目。
  • tf.keras .Keras。Keras已集成到 Confuci 和 TensorFlow 2 中。 API 实现称为“” tf.keras”,因为这是通过引用 API 使用的 Python 习惯用法,那么 Zenserbule 模块通过引用 tf.keras 就变成了 n Keras。 in调用API元素,例如:
    1. # tf.keras python 的示例f # 使用 keras API
    2. model = tf.keras.Sequential()

    由于 TensorFlow 是Keras开源项目的事实标准后端,因此集成意味着现在可以使用单个库而不是两个单独的库。此外,独立的Keras项目现在建议所有未来的Keras开发 'tf.keras API 使用。

    目前,我们建议Keras用户在TensorFlow 2.0中使用tf.keras上的多后端Keras和TensorFlow后端开关。 tf.keras 维护得更好,并且与 TensorFlow 功能集成得更好。

    1.2 如何安装TensorFlow

    在安装TensorFlow之前,请确保已安装Python,例如Python 3.6或更高版本。

    如果你没有安装Python,你可以用Anaconda安装它。

    安装 TensorFlow 开源深度学习库的方法有很多种。

    在工作站上安装 TensorFlow 最常见、或许也是最简单的方法是 pip。

    例如,在命令行中输入:

    sudo pip install tensorflow

    本教程中的所有示例都可以在现代 CPU 上正常运行。如果您想为 GPU 配置 TensorFlow,可以在完成本教程后进行。

    1.3 如何确认 TensorFlow 已安装

    安装 TensorFlow 后,确认库已成功安装并且可以开始使用非常重要。

    如果 TensorFlow 未正确安装或在这一步抛出错误,您稍后将无法运行示例。

    创建一个名为 versions.py 的新文件,并将以下代码复制并粘贴到该文件中。

    1. # 检查版本
    2. import tensorflow
    3. print(tensorflow.__version__)

    保存文件,然后打开命令行并更改保存文件的目录。

    然后输入:

    python versions.py

    查看版本信息,确认TensorFlow安装正确。

    这还向您展示了如何从命令行运行 Python 脚本。我建议以这种方式从命令行运行所有代码。

    如果收到警告消息

    有时,当您使用 tf.keras API 时,您可能会看到打印的警告。

    这可能包含以下消息:您的硬件支持 TensorFlow 安装未配置为使用的功能。

    我的工作站上的一些示例包括:

    1. 您的 CPU 支持此 TensorFlow 二进制文件未编译为使用的指令:AVX2 FMA
    2. ​​(0):主机,默认版本❀这些不是信息性的。阻止您执行代码。您现在可以忽略此类消息。

      现在您已经了解了 tf.keras 是什么、如何安装 TensorFlow 以及如何确认您的开发环境正在运行,让我们看看 TensorFlow 中深度学习模型的生命周期。

      2. 深度学习模型生命周期

      在本节中,您将了解深度学习模型的生命周期以及可用于定义模型的两个 tf.keras API。

      2.1 五步模型生命周期

      模型具有生命周期,这种非常简单的知识为数据集建模和理解 tf.keras API 提供了基础。

      生命周期的五个步骤如下:

      1. 定义模型。
      2. 编译模型。
      3. 适合模型。
      4. 评估模型。
      5. 做出你的预测。

      让我们依次仔细看看每一步。

      定义模型

      定义模型要求您首先选择所需的模型类型,然后选择架构或网络拓扑。

      从 API 角度来看,这涉及定义模型的层、为每层配置多个节点和激活函数,以及将各层连接成一个内聚模型。

      模型可以使用顺序 API 或功能 API 来定义,我们将在下一节中介绍。

      1. # 定义模型
      2. model = ...

      编译模型

      编译模型需要首先选择一个损失函数进行优化,例如均方误差或交叉熵。

      它还要求您选择一种算法来执行优化过程,通常是随机梯度下降。它还可能会提示您选择要在模型训练期间跟踪的任何性能指标。

      从 API 角度来看,这涉及调用函数来使用所选配置编译模型,准备有效使用定义的模型所需的适当数据结构。

      优化器可以指定为已知优化器类的字符串,例如,随机梯度下降的“sgd”,或者您可以配置并使用优化器类的实例。

      有关支持的优化器列表,请参阅:

      • tf.keras Optimizer
      1. # 编译模型
      2. opt = SGD(learning_rate=0.01,momentum=0.01,momentum=0.01.compile(optimizer=opt) , loss='binary_crossentropy')

      最常见的三个损失函数是:

      • 'binary_crossentropy'用于二元分类。使用的分类。
      • “mse”(
      1. # 编译模型
      2. model.compile(optimizer='sgd', loss='mse')

      支持的损失函数列表,请参阅:

      • tf .keras 损失函数 指标被定义为已知指标函数的字符串列表或用于评估预测的函数列表。

        有关支持的指标列表,请参阅:

        • tf.keras 指标
        1. 。 ..
        2. # 编译模型
        3. model.compile.compile_gbin_d_cross , Metrics=['accuracy'])

        拟合模型

        拟合模型需要先选择训练配置,比如训练的数量epochs(遍历训练数据集)和批量大小(用于估计模型错误样本数量的持续时间)。

        训练应用所选的优化算法来最小化所选的损失函数,并使用误差算法的反向传播更新模型。

        拟合模型是整个过程中缓慢的部分,可能需要几秒钟到几小时到几天的时间,具体取决于模型的复杂性、所使用的硬件以及训练数据集的大小。

        从 API 角度来看,这涉及调用函数来执行训练过程。该函数会阻塞(不返回),直到训练过程完成。

        1. ...
        2. # 拟合模型
        3. model.fit(X, y, epochs=100, batch_size=32)

        当模型拟合时,进度条会汇总所有状态以及整个训练过程。通过将“verbose”参数设置为 2,可以将其简化为每个时期的模型性能的简单报告。通过设置“verbose”,可以在训练期间禁用所有输出。 0.

        1. ...
        2. # 拟合模型
        3. model.fit(X, y, epochs=100, batch_size=32, verbose=0)

        评估模型评估模型,你必须首先选择数据集来评估模型。这应该是训练期间未使用的数据,以便当我们对新数据进行预测时,我们可以得到模型性能的无偏估计。

        模型评估的速度与你想要用于评估的数据量成正比,尽管它比训练快得多,因为模型不会改变。

        从 API 角度来看,这涉及使用保存的数据集调用函数并报告损失和可能的其他指标。 ...这就是我们首先拥有模型的原因。

        它要求您拥有需要预测的新数据,例如,如果没有目标值。

        从 API 角度来看,您只需调用一个函数即可对类标签、概率或数值进行预测:无论您设计模型要预测什么。

        您可能需要在加载模型进行预测之前保存模型。您还可以选择在使用模型之前使模型适合所有可用数据。

        现在我们已经熟悉了模型生命周期,让我们看看使用 tf.keras API 构建模型的两种主要方法:顺序模型和函数模型。

        1. ...
        2. # 进行预测
        3. yhat = model.predict(X)

        2.2 序列模型 API(简单) -model API 是简单模型,API 推荐使用简单模型 尤其是当您刚开始时。

        被称为“顺序”,因为它涉及定义一个顺序类,并以线性方式从输入到输出逐层添加到模型中。

        下面的示例定义了一个顺序 MLP 模型,该模型采用 8 个输入、一个具有 10 个节点的隐藏层,以及一个具有 1 个节点的输出层来预测数值。

        1. # 使用顺序 api 定义的模型示例
        2. from tensorflow.keras import Sequential
        3. from tensorflow.keras.layers import Dense
        4. # 定义模型 =
      1. model.add(Dense( 10、input_shape=(8,)))
      2. model.add(Dense(1))

      请注意,网络的可见层由第一个隐藏层上的“”组成input_shape " 参数定义。这意味着在上面的示例中,模型期望样本的输入是八个数字的向量。

      顺序 API 很容易使用,因为model.add()总是在添加所有层之前调用。

      例如,这是一个具有五个隐藏层的深度 MLP。

      1. # 使用顺序 api 定义的模型示例
      2. fromtensorflow.keras import Sequential
      3. from tensorflow.keras.layers import Dense
      4. # 定义模型 =
  1. model.add(Dense(100, input_shape=(8,)))
  2. model.add(Dense(80))
  3. model.add (密集(30))
  4. model.add(密集10))
  5. model.add(密集(5))
  6. model.add(密集(1))

2.3模型 API(高级)

模型 API 更复杂,但也更灵活。

它涉及将一层的输出显式连接到另一层的输入。每个连接都被指示。

首先,必须通过 Input 类定义输入层,并且必须指定输入样本的形状。定义模型时,必须保留对输入层的引用。

  1. ...
  2. # 定义图层
  3. 。这将返回对此新层中输出连接的引用。
    1. ...
    2. x = Density(10)(x_in)

    然后我们可以以相同的方式将其连接到输出层。

    1. ...
    2. x_out = Density(1)(x)

    连接后,我们定义一个模型对象并指定输入和输出层。下面列出了一个完整的示例。

    1. # 使用函数式 api 定义的模型示例
    2. from tensorflow.keras import Model
    3. from tensorflow.keras import Input
    4. from tensorflow.keras.layers import theLayer x_in = Input( Form =(8,))
    5. x = Density(10)(x_in)
    6. (输入=x_in, 输出=x_out)

    这样就可以进行更复杂的模型设计,例如可以具有多个输入路径(分离向量)和具有多个输出路径(例如单词和数字)的模型。

    习惯该功能的 API 可能会很有趣。

    有关函数式 API 的更多信息,请参阅:

    • TensorFlow 中的Keras函数式 API

    现在我们已经熟悉了模型生命周期和可用于定义模型的两个 API,让我们看一下标准型号。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门