提交 a4e3c388 编写于 作者: W wizardforcel

2020-12-27 15:13:27

上级 1ba5cd8a
...@@ -193,11 +193,11 @@ self.num_filters = 32 ...@@ -193,11 +193,11 @@ self.num_filters = 32
使用任何 API 创建模型后,最好使用`model.summary()`和/或`tf.keras.utils.plot_model(...)`查看模型详细信息。 使用任何 API 创建模型后,最好使用`model.summary()`和/或`tf.keras.utils.plot_model(...)`查看模型详细信息。
# 模型编与训练 # 模型编与训练
神经网络对复杂的非线性函数建模,例如`sin(x)``x ** 2``x ** 3`,仅举几个简单的函数, 由层的网络(堆栈)组成。 这些层可以是卷积层,循环层或简单的前馈层的混合。 每层由神经元组成。 神经元有两种模型化非线性的成分:前一层的加权总和,然后是激活函数。 神经网络试图以迭代方式学习给定训练数据的分布。 一旦通过指定激活函数以层栈的形式构建了神经网络,就需要定义一个目标函数(也称为损失函数)以使用适当的模型来改善模型权重。 神经网络对复杂的非线性函数建模,例如`sin(x)``x ** 2``x ** 3`,仅举几个简单的函数, 由层的网络(堆栈)组成。 这些层可以是卷积层,循环层或简单的前馈层的混合。 每层由神经元组成。 神经元有两种模型化非线性的成分:前一层的加权总和,然后是激活函数。 神经网络试图以迭代方式学习给定训练数据的分布。 一旦通过指定激活函数以层栈的形式构建了神经网络,就需要定义一个目标函数(也称为损失函数)以使用适当的模型来改善模型权重。
# `compile()`API # `compile()` API
`tf.keras.Model.compile(...)` API 有助于定义`loss`函数和优化器,如下所示: `tf.keras.Model.compile(...)` API 有助于定义`loss`函数和优化器,如下所示:
...@@ -218,7 +218,7 @@ model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.1), ...@@ -218,7 +218,7 @@ model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.1),
metrics=[tf.keras.metrics.Accuracy()]) metrics=[tf.keras.metrics.Accuracy()])
``` ```
# `fit()`API # `fit()` API
`tf.keras.Model.fit(...)`是训练模型的主要 API。 它以输入训练数据以及(可选)批量大小,回调等作为输入: `tf.keras.Model.fit(...)`是训练模型的主要 API。 它以输入训练数据以及(可选)批量大小,回调等作为输入:
...@@ -240,7 +240,7 @@ TF 2.0 提供了支持,可以轻松完成此操作,因为可以在训练期 ...@@ -240,7 +240,7 @@ TF 2.0 提供了支持,可以轻松完成此操作,因为可以在训练期
TF 提供了仅保存模型权重或保存整个模型的灵活性,包括模型权重,配置和优化器详细信息,等等。 TF 提供了仅保存模型权重或保存整个模型的灵活性,包括模型权重,配置和优化器详细信息,等等。
# 随着训练的进行保存检查点 # 在训练同时保存检查点
可以使用`tf.keras.callbacks`轻松实现保存检查点,如下所示: 可以使用`tf.keras.callbacks`轻松实现保存检查点,如下所示:
...@@ -254,7 +254,7 @@ TF 提供了仅保存模型权重或保存整个模型的灵活性,包括模 ...@@ -254,7 +254,7 @@ TF 提供了仅保存模型权重或保存整个模型的灵活性,包括模
model.load_weights(checkpoint_path) ... model.load_weights(checkpoint_path) ...
``` ```
# 手动保存和恢复重量 # 手动保存和恢复权重
模型权重也可以保存在检查点文件中。 这可以用来节省训练后的体重,以便将来进行进一步的训练: 模型权重也可以保存在检查点文件中。 这可以用来节省训练后的体重,以便将来进行进一步的训练:
...@@ -288,7 +288,7 @@ model.save('my_model.h5') ...@@ -288,7 +288,7 @@ model.save('my_model.h5')
new_model = keras.models.load_model('my_model.h5') ... new_model = keras.models.load_model('my_model.h5') ...
``` ```
# 定制训练逻辑 # 自定义训练逻辑
如前所述,TF 2.0 带来了默认的紧急执行,这意味着基于图的代码流的传统 TF 1.x 自定义训练逻辑实现现在已过时。 为了在 TF 2.0 中实现有关急切执行的自定义训练逻辑,可以使用`tf.GradientTape``tf.GradientTape`的目的是记录用于自动微分的运算,或者用于计算运算或计算相对于其输入变量的梯度。 这可以通过使用`tf.GradientTape`作为上下文管理器来完成。 TensorFlow 将在`tf.GradientTape`上下文中执行的所有操作记录到磁带上,然后将其与梯度一起与那些操作关联,以使用反向模式微分计算记录的操作的梯度。 如前所述,TF 2.0 带来了默认的紧急执行,这意味着基于图的代码流的传统 TF 1.x 自定义训练逻辑实现现在已过时。 为了在 TF 2.0 中实现有关急切执行的自定义训练逻辑,可以使用`tf.GradientTape``tf.GradientTape`的目的是记录用于自动微分的运算,或者用于计算运算或计算相对于其输入变量的梯度。 这可以通过使用`tf.GradientTape`作为上下文管理器来完成。 TensorFlow 将在`tf.GradientTape`上下文中执行的所有操作记录到磁带上,然后将其与梯度一起与那些操作关联,以使用反向模式微分计算记录的操作的梯度。
...@@ -414,7 +414,7 @@ def clip_gradient_by_norm(x, norm): ...@@ -414,7 +414,7 @@ def clip_gradient_by_norm(x, norm):
TF 2.0 的优点之一是能够在多个 GPU 和 TPU 上以分布式方式训练和推断模型,而无需编写大量代码。 使用分发策略 API `tf.distribute.Strategy(...)`可以简化此过程,该 API 随时可用。 “`fit()` API”部分介绍了`tf.keras.Model.fit(...)`,该部分说明了如何使用此功能训练模型。 在本节中,我们将展示如何使用分布策略跨多个 GPU 和 TPU 训练基于`tf.keras`的模型。 值得注意的是,`tf.distribute.Strategy(...)`可与`tf.keras``tf.estimator`等高级 API 一起使用,并支持自定义训练循环或...中的任何计算。 TF 2.0 的优点之一是能够在多个 GPU 和 TPU 上以分布式方式训练和推断模型,而无需编写大量代码。 使用分发策略 API `tf.distribute.Strategy(...)`可以简化此过程,该 API 随时可用。 “`fit()` API”部分介绍了`tf.keras.Model.fit(...)`,该部分说明了如何使用此功能训练模型。 在本节中,我们将展示如何使用分布策略跨多个 GPU 和 TPU 训练基于`tf.keras`的模型。 值得注意的是,`tf.distribute.Strategy(...)`可与`tf.keras``tf.estimator`等高级 API 一起使用,并支持自定义训练循环或...中的任何计算。
# 张量板 # TensorBoard
TensorBoard 是 TensorFlow 平台最重要的优势之一,而有了 TF 2.0,TensorBoard 进入了一个新的高度。 在机器学习中,要改善模型权重,通常需要能够对其进行度量。 TensorBoard 是用于提供机器学习工作流程期间所需的测量和可视化的工具。 它可以跟踪实验指标,例如损失和准确性,可视化模型图,将嵌入投影到较低维度的空间等。 与 TF 1.x 相比,TF 2.0 提供了一种非常简单的方法来使用回调来集成和调用 TensorBoard,在“`fit()` API”部分中对此进行了解释。 TensorBoard 还提供了一些技巧来测量和可视化您的数据和模型图,并且具有假设分析和分析工具。 它还扩展了自身以进行调试。 TensorBoard 是 TensorFlow 平台最重要的优势之一,而有了 TF 2.0,TensorBoard 进入了一个新的高度。 在机器学习中,要改善模型权重,通常需要能够对其进行度量。 TensorBoard 是用于提供机器学习工作流程期间所需的测量和可视化的工具。 它可以跟踪实验指标,例如损失和准确性,可视化模型图,将嵌入投影到较低维度的空间等。 与 TF 1.x 相比,TF 2.0 提供了一种非常简单的方法来使用回调来集成和调用 TensorBoard,在“`fit()` API”部分中对此进行了解释。 TensorBoard 还提供了一些技巧来测量和可视化您的数据和模型图,并且具有假设分析和分析工具。 它还扩展了自身以进行调试。
...@@ -496,7 +496,7 @@ with file_writer.as_default(): ...@@ -496,7 +496,7 @@ with file_writer.as_default():
tf.summary.image("Training data", img, step=0) tf.summary.image("Training data", img, step=0)
``` ```
# 图仪表板 # 图仪表板
TensorBoard 的图形仪表板提供可视化和检查 TensorFlow 模型的功能。 我们可以使用它来快速查看模型结构的概念图以验证其设计或查看操作级图以了解 TensorFlow 如何理解和执行程序。 检查操作级图还可以深入了解如何重新设计模型以获得更佳的运行时间。 TensorBoard 的图形仪表板提供可视化和检查 TensorFlow 模型的功能。 我们可以使用它来快速查看模型结构的概念图以验证其设计或查看操作级图以了解 TensorFlow 如何理解和执行程序。 检查操作级图还可以深入了解如何重新设计模型以获得更佳的运行时间。
...@@ -568,7 +568,7 @@ for num_units in HP_NUM_UNITS.domain.values: ...@@ -568,7 +568,7 @@ for num_units in HP_NUM_UNITS.domain.values:
该工具可轻松调整超参数和详细的日志,并在 TensorBoard 中直观显示结果。 该工具可轻松调整超参数和详细的日志,并在 TensorBoard 中直观显示结果。
# 假设工具 # What-If 工具
TensorFlow 2.0 引入了一个非常强大的工具,即 **What-If 工具****WIT**),该工具可在 TensorBoard 仪表板内部提供易于使用的界面。 但是,仅当使用 TensorFlow 服务为模型提供服务时,才可以使用 WIT。 在第 5 章,“模型推理管道 – 多平台部署”中解释了 TensorFlow 服务。 另外,为了使用 WIT,推理数据集必须为`TFRecords`格式。 TensorFlow 2.0 引入了一个非常强大的工具,即 **What-If 工具****WIT**),该工具可在 TensorBoard 仪表板内部提供易于使用的界面。 但是,仅当使用 TensorFlow 服务为模型提供服务时,才可以使用 WIT。 在第 5 章,“模型推理管道 – 多平台部署”中解释了 TensorFlow 服务。 另外,为了使用 WIT,推理数据集必须为`TFRecords`格式。
......
# 模型推理管道-多平台部署 # 模型推理管道 - 多平台部署
训练完模型后您会怎么做? 用它? 如果答案是肯定的,那么您将如何使用它? 您正在寻找的答案是**推理**。 简而言之,推理过程是确保机器学习模型可用于满足实际用户需求的基础。 正式地说,推理是有效地计算经过训练的机器学习模型以满足用户需求的过程。 可以在各种硬件类型上进行推断,包括服务器以及最终用户设备(例如电话和 Web 浏览器)。 根据用户要求,它也可以在不同的操作系统上执行。 训练完模型后您会怎么做? 用它? 如果答案是肯定的,那么您将如何使用它? 您正在寻找的答案是**推理**。 简而言之,推理过程是确保机器学习模型可用于满足实际用户需求的基础。 正式地说,推理是有效地计算经过训练的机器学习模型以满足用户需求的过程。 可以在各种硬件类型上进行推断,包括服务器以及最终用户设备(例如电话和 Web 浏览器)。 根据用户要求,它也可以在不同的操作系统上执行。
...@@ -23,7 +23,7 @@ import tensorflow as tf ...@@ -23,7 +23,7 @@ import tensorflow as tf
可在[这个页面](https://github.com/PacktPublishing/What-s-New-in-TensorFlow-2.0/tree/master/Chapter05)中获得本章的代码文件。 可在[这个页面](https://github.com/PacktPublishing/What-s-New-in-TensorFlow-2.0/tree/master/Chapter05)中获得本章的代码文件。
# 机器学习工作流程-推理阶段 # 机器学习工作流程 - 推理阶段
机器学习应用程序的最常见子集之一遵循*构建一次,并多次使用*范式。 这种类型的应用程序涉及所谓的推理阶段。 在推断阶段,开发人员必须专注于运行模型以满足用户需求。 满足用户需求可能涉及从用户那里接受输入并对其进行处理以返回适当的输出。 下图描述了典型的高级机器学习应用程序工作流程: 机器学习应用程序的最常见子集之一遵循*构建一次,并多次使用*范式。 这种类型的应用程序涉及所谓的推理阶段。 在推断阶段,开发人员必须专注于运行模型以满足用户需求。 满足用户需求可能涉及从用户那里接受输入并对其进行处理以返回适当的输出。 下图描述了典型的高级机器学习应用程序工作流程:
...@@ -37,7 +37,7 @@ import tensorflow as tf ...@@ -37,7 +37,7 @@ import tensorflow as tf
实际上,在推理时,模型被简化为一个黑盒子,它具有一组预定义的输入和输出以及一个与底层模型进行交互的统一接口。 开发人员现在要做的就是建立在给定环境中实现和执行黑匣子所需的基础结构。 在以下各节中,我们将学习如何构建管道以服务于各种流行的软件和硬件环境中的模型。 实际上,在推理时,模型被简化为一个黑盒子,它具有一组预定义的输入和输出以及一个与底层模型进行交互的统一接口。 开发人员现在要做的就是建立在给定环境中实现和执行黑匣子所需的基础结构。 在以下各节中,我们将学习如何构建管道以服务于各种流行的软件和硬件环境中的模型。
# 模型工件– SavedModel 格式 # 模型工件 – SavedModel 格式
`SavedModel`格式是 TensorFlow 使用的默认模型序列化和反序列化格式。 用外行的术语来说,这可以理解为一个容器,它容纳了在不访问创建模型的原始代码的情况下从头开始重现模型的所有内容。 我们可以使用`SavedModel`将训练后的模型从训练阶段转移到推理阶段,甚至在训练过程的不同部分之间转移状态。 简而言之,可以说`SavedModel`包含完整的 TensorFlow 程序以及模型权重和所描述的各种计算操作的描述。 使用 TF 2.0 的 Python API 时,现在可以导出某些本机... `SavedModel`格式是 TensorFlow 使用的默认模型序列化和反序列化格式。 用外行的术语来说,这可以理解为一个容器,它容纳了在不访问创建模型的原始代码的情况下从头开始重现模型的所有内容。 我们可以使用`SavedModel`将训练后的模型从训练阶段转移到推理阶段,甚至在训练过程的不同部分之间转移状态。 简而言之,可以说`SavedModel`包含完整的 TensorFlow 程序以及模型权重和所描述的各种计算操作的描述。 使用 TF 2.0 的 Python API 时,现在可以导出某些本机...
...@@ -242,7 +242,7 @@ Result for output key output_0: ...@@ -242,7 +242,7 @@ Result for output key output_0:
在随后的部分中,我们将探讨在各种硬件和软件环境中服务于此模型的方法。 在随后的部分中,我们将探讨在各种硬件和软件环境中服务于此模型的方法。
# 推断后端服务器 # 后端服务器上的推理
在当今世界,分布式系统无处不在。 从我们浏览的网站到我们在手机上使用的应用程序范围,当我们不使用分布式系统时几乎没有一天。 鉴于这种无所不在的性质,将这种范例用于构建机器学习系统显然是一个选择。 构建分布式系统的典型模式是在后端服务器上执行资源密集型(和数据敏感型)计算,同时将较轻(且相对独立)的计算任务推向用户设备。 机器学习应用程序的很大一部分属于资源密集型类别。 此外,机器学习模型是使用数据构建的。 在现实世界中的很大一部分... 在当今世界,分布式系统无处不在。 从我们浏览的网站到我们在手机上使用的应用程序范围,当我们不使用分布式系统时几乎没有一天。 鉴于这种无所不在的性质,将这种范例用于构建机器学习系统显然是一个选择。 构建分布式系统的典型模式是在后端服务器上执行资源密集型(和数据敏感型)计算,同时将较轻(且相对独立)的计算任务推向用户设备。 机器学习应用程序的很大一部分属于资源密集型类别。 此外,机器学习模型是使用数据构建的。 在现实世界中的很大一部分...
...@@ -348,7 +348,7 @@ Detailed resources for getting started with TensorFlow.js are available at the f ...@@ -348,7 +348,7 @@ Detailed resources for getting started with TensorFlow.js are available at the f
* <https://www.tensorflow.org/js/tutorials> * <https://www.tensorflow.org/js/tutorials>
* <https://www.tensorflow.org/js/demos> * <https://www.tensorflow.org/js/demos>
# 对移动和物联网设备的推断 # 移动和物联网设备上的推理
在过去几年中,智能手机的使用呈指数增长,并且以不减缓的方式持续增长。 其他物联网设备在我们的日常生活中也变得越来越普遍。 使用率的这些上升趋势对机器学习系统产生了有趣的影响。 与普通主机相比,这些平台通常资源有限。 结果,需要其他优化来在此类设备上进行推理。 TensorFlow 平台支持构建机器学习和基于深度学习的应用程序,这些应用程序可以在不同类型的边缘设备(例如手机和其他 IoT 设备)上运行。 实现此目的的主要工具是... 在过去几年中,智能手机的使用呈指数增长,并且以不减缓的方式持续增长。 其他物联网设备在我们的日常生活中也变得越来越普遍。 使用率的这些上升趋势对机器学习系统产生了有趣的影响。 与普通主机相比,这些平台通常资源有限。 结果,需要其他优化来在此类设备上进行推理。 TensorFlow 平台支持构建机器学习和基于深度学习的应用程序,这些应用程序可以在不同类型的边缘设备(例如手机和其他 IoT 设备)上运行。 实现此目的的主要工具是...
......
...@@ -157,7 +157,7 @@ TFLite 模型优化也一直延伸到设备上的硬件。 这是因为,由于 ...@@ -157,7 +157,7 @@ TFLite 模型优化也一直延伸到设备上的硬件。 这是因为,由于
![](img/6b0e98ac-64e7-4b03-ad69-abbde7fee70d.png) ![](img/6b0e98ac-64e7-4b03-ad69-abbde7fee70d.png)
# Y # AIY
Google 为语音和视觉应用发布了自己的制造商套件,称为 AIY。 这些套件随附了所有必需的零件和组件,以及在线易于理解的教程。 AIY 当前提供两种套件-语音套件和视觉套件。 Google 为语音和视觉应用发布了自己的制造商套件,称为 AIY。 这些套件随附了所有必需的零件和组件,以及在线易于理解的教程。 AIY 当前提供两种套件-语音套件和视觉套件。
......
...@@ -20,7 +20,7 @@ TF 2.0 在代码方面所做的最大更改之一就是急切执行。 TF 1.x ...@@ -20,7 +20,7 @@ TF 2.0 在代码方面所做的最大更改之一就是急切执行。 TF 1.x
TF 1.x 中的`session.run()`调用与...非常相似。 TF 1.x 中的`session.run()`调用与...非常相似。
# 惯用 TF 2.0 的推荐技术 # 符合 TF 2.0 的推荐技术
第一条建议涉及在 TF 2.0 中处理常规代码工作流。 TF 1.x 中常见的工作流程是使用瀑布策略,其中所有计算都布置在默认图形上。 然后,使用`session.run()`运行选定的张量。 在 TF 2.0 中,应将代码重构为较小的函数,这些函数将在需要时调用。 这些函数可以是普通的 Python 函数,但如果在另一个以`tf.function`注释的函数中调用它们,则仍可以在图形模式下运行。 这意味着`tf.function`仅应用于注释高级计算,例如模型的前向传递或单个训练步骤。 第一条建议涉及在 TF 2.0 中处理常规代码工作流。 TF 1.x 中常见的工作流程是使用瀑布策略,其中所有计算都布置在默认图形上。 然后,使用`session.run()`运行选定的张量。 在 TF 2.0 中,应将代码重构为较小的函数,这些函数将在需要时调用。 这些函数可以是普通的 Python 函数,但如果在另一个以`tf.function`注释的函数中调用它们,则仍可以在图形模式下运行。 这意味着`tf.function`仅应用于注释高级计算,例如模型的前向传递或单个训练步骤。
...@@ -361,7 +361,7 @@ print(' loss: {:.3f}'.format(mean_loss)) ...@@ -361,7 +361,7 @@ print(' loss: {:.3f}'.format(mean_loss))
print(' accuracy: {:.3f}'.format(mean_accuracy)) print(' accuracy: {:.3f}'.format(mean_accuracy))
``` ```
# 经常问的问题 # 常见问题
在本节中,将解决有关从 TF 1.x 迁移到 TF 2.0 的一些常见问题。 在本节中,将解决有关从 TF 1.x 迁移到 TF 2.0 的一些常见问题。
...@@ -377,7 +377,7 @@ TF 2.0 基本 API 将包括针对任务的更多预制估计器,例如增强 ...@@ -377,7 +377,7 @@ TF 2.0 基本 API 将包括针对任务的更多预制估计器,例如增强
当前正在开发的另一个主要附加功能是`tf-agents`模块。 该模块将核心强化学习算法实现为**智能体**,该算法定义了与环境进行交互的策略并从集体经验中训练了该策略。 `TF-agents`与 OpenAI Gym 框架一起实现,并抽象了许多用于开发的关键强化学习算法。 该模块当前处于预发布状态,但将于今年晚些时候发布。 当前正在开发的另一个主要附加功能是`tf-agents`模块。 该模块将核心强化学习算法实现为**智能体**,该算法定义了与环境进行交互的策略并从集体经验中训练了该策略。 `TF-agents`与 OpenAI Gym 框架一起实现,并抽象了许多用于开发的关键强化学习算法。 该模块当前处于预发布状态,但将于今年晚些时候发布。
# 更多资源可看 # 可看的更多资源
可以在 TensorFlow Beta 网站上找到教程和许多其他资源,其中包含有关创建和训练机器学习模型的关键因素的信息。 该页面还为该领域的许多重要技术提供了[许多有用的端到端教程](https://www.tensorflow.org/beta) 可以在 TensorFlow Beta 网站上找到教程和许多其他资源,其中包含有关创建和训练机器学习模型的关键因素的信息。 该页面还为该领域的许多重要技术提供了[许多有用的端到端教程](https://www.tensorflow.org/beta)
......
# 第 1 节:TensorFlow 2.0-架构和 API 更改 # 第 1 节:TensorFlow 2.0 - 架构和 API 更改
本书的这一部分将为您简要概述 TensorFlow 2.0 中的新增功能,与 TensorFlow 1.x 的比较,惰性评估和热切执行之间的差异,架构级别的更改以及关于`tf.keras``Estimator`的 API 使用情况。 本书的这一部分将为您简要概述 TensorFlow 2.0 中的新增功能,与 TensorFlow 1.x 的比较,惰性评估和热切执行之间的差异,架构级别的更改以及关于`tf.keras``Estimator`的 API 使用情况。
......
# 第 2 部分:TensorFlow 2.0-数据和模型训练管道 # 第 2 部分:TensorFlow 2.0 - 数据和模型训练管道
本书的这一部分将概述总体输入数据和训练模型管道。 它还将详细介绍使用`tf.keras` API 创建模型,训练和验证流程。 本书的这一部分将概述总体输入数据和训练模型管道。 它还将详细介绍使用`tf.keras` API 创建模型,训练和验证流程。
......
# 第 3 节:TensorFlow 2.0-模型推断和部署以及 AIY # 第 3 节:TensorFlow 2.0 - 模型推断和部署以及 AIY
如果您使用过 TensorFlow 1.x,则本部分将重点介绍迁移到 TensorFlow 2.0 所需的总体概念更改。 它还将教您使用 TensorFlow 可以进行的各种 AIY 项目。 最后,本节向您展示如何将 TensorFlow Lite 与跨多个平台的低功耗设备一起使用。 如果您使用过 TensorFlow 1.x,则本部分将重点介绍迁移到 TensorFlow 2.0 所需的总体概念更改。 它还将教您使用 TensorFlow 可以进行的各种 AIY 项目。 最后,本节向您展示如何将 TensorFlow Lite 与跨多个平台的低功耗设备一起使用。
......
# 第 4 节:TensorFlow 2.0-迁移,摘要 # 第 4 节:TensorFlow 2.0 - 迁移,总结
本书的本部分将以高级方式总结 **TensorFlow 2.0****TF 2.0**)的使用,以及与以前版本相比 TF 2.0 的兼容性差异。 如果您使用过 **TensorFlow 1.x****TF 1.x**),则本书的这一部分将重点介绍如何迁移到 TF 2.0。 尽管有一个将 TF 1.x 代码转换为 TF 2.0 的迁移 API,但它只是进行语法到语法的转换。 本部分还将深入指导您完成从语义上将 TF 1.x 代码转换为 TF 2.0 所需的代码级更改。 本书的本部分将以高级方式总结 **TensorFlow 2.0****TF 2.0**)的使用,以及与以前版本相比 TF 2.0 的兼容性差异。 如果您使用过 **TensorFlow 1.x****TF 1.x**),则本书的这一部分将重点介绍如何迁移到 TF 2.0。 尽管有一个将 TF 1.x 代码转换为 TF 2.0 的迁移 API,但它只是进行语法到语法的转换。 本部分还将深入指导您完成从语义上将 TF 1.x 代码转换为 TF 2.0 所需的代码级更改。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册