提交 fc6461e5 编写于 作者: W wizardforcel

2020-12-23 23:31:51

上级 17855c34
......@@ -4,7 +4,7 @@
TensorFlow 1.x 版本强烈支持低级和中级 API,以构建机器学习模型。 它还具有 Estimator API,包括预制的估算器,例如`LinearClassifier``DNNRegressor`,以及用作高级 TF API 的定制估算器。 TF 1.x 中对估算器的支持是提供高级 API,与低级和中级 TF API 相比,它们更易于构建。 从 TensorFlow 2.0 开始,主要变化之一是采用 Keras API 标准作为高级 API 而不是 Estimators。 对于 TensorFlow 开发团队而言,这非常有意义,因为 Keras API 是迄今为止机器学习社区中采用的最大 API 集,并且 Keras 的创建者 Francois Chollet 也是一位出色的人工智能(AI)研究人员,现在已经加入 TensorFlow 开发团队的成员。 TensorFlow 1.x 版本已经提供对`tf.keras`的初始支持; 但是,在 TF 2.0 版本中可以获得`tf.keras`的完整而完整的体验。
在本章中,我们将浏览`tf.keras` API,包括 API 的顺序,功能和模型子分类类型。 您将学习如何使用`tf.data.Dataset`将输入数据流水线馈入模型流水线,以及特征列的可能分类结构。 我们还将介绍如何定义损失函数,最常见的优化器,基于 TensorBoard 的数据,模型调试,可视化和性能分析等。 从 TensorFlow 2.0 开始,`tf.keras` API 已紧密集成到 TensorFlow 生态系统中,其中包括对`tf.data`的改进支持和最新可用的分发策略,可用于跨多种 GPU 和 TPU 进行分布式培训。 `tf.keras`还无缝支持导出训练有素的模型,这些模型可以使用 TensorFlow Serving 和其他技术在 TensorFlow Lite 的移动和嵌入式设备上进行服务和部署。
在本章中,我们将浏览`tf.keras` API,包括 API 的顺序,功能和模型子分类类型。 您将学习如何使用`tf.data.Dataset`将输入数据流水线馈入模型流水线,以及特征列的可能分类结构。 我们还将介绍如何定义损失函数,最常见的优化器,基于 TensorBoard 的数据,模型调试,可视化和性能分析等。 从 TensorFlow 2.0 开始,`tf.keras` API 已紧密集成到 TensorFlow 生态系统中,其中包括对`tf.data`的改进支持和最新可用的分发策略,可用于跨多种 GPU 和 TPU 进行分布式培训。 `tf.keras`还无缝支持导出训练有素的模型,这些模型可以使用 TensorFlow 服务和其他技术在 TensorFlow Lite 的移动和嵌入式设备上进行服务和部署。
我们将在本章介绍以下主题:
......@@ -570,7 +570,7 @@ for num_units in HP_NUM_UNITS.domain.values:
# 假设工具
TensorFlow 2.0 引入了一个非常强大的工具,即 **What-If 工具****WIT**),该工具可在 TensorBoard 仪表板内部提供易于使用的界面。 但是,仅当使用 TensorFlow Serving 为模型提供服务时,才可以使用 WIT。 在第 5 章,“模型推理管道 – 多平台部署”中解释了 TensorFlow Serving。 另外,为了使用 WIT,推理数据集必须为`TFRecords`格式。
TensorFlow 2.0 引入了一个非常强大的工具,即 **What-If 工具****WIT**),该工具可在 TensorBoard 仪表板内部提供易于使用的界面。 但是,仅当使用 TensorFlow 服务为模型提供服务时,才可以使用 WIT。 在第 5 章,“模型推理管道 – 多平台部署”中解释了 TensorFlow 服务。 另外,为了使用 WIT,推理数据集必须为`TFRecords`格式。
WIT 的某些功能是可以将具有相同工作流程的多个模型进行比较,推理结果的可视化,基于相似度的数据排列以及通过编辑数据点执行模型的敏感性分析的能力。
......
......@@ -60,13 +60,13 @@ import tensorflow as tf
正如我们在第 1 章中看到的那样,第 2 章“TensorFlow 2.0 入门”, “Keras 默认集成和急切执行”,渴望 默认情况下启用执行是 TF 2.0 中引入的主要更改之一。 第 1 章和 “TensorFlow 2.0 入门”还简要提到了 TF 2.0 与 Python 编程语言更紧密地结合在一起。 此更改的核心是低级`tf.function` API。 实际上,这是通过使用户能够从 Python 函数创建 TensorFlow 图而将 TensorFlow 1.x 的功能与渴望执行的优点相结合。 它既可以用作可调用函数,也可以用作装饰器。 在本节中,我们将简要介绍一下如何在每个人中使用它。
# tf.autograph 函数
# `tf.autograph`函数
到目前为止,我们已经看到了如何从 Python 函数创建 TensorFlow 图形代码。 TF 2.0 将 Python-TensorFlow 耦合提升到了一个全新的水平。 新引入的 AutoGraph(`tf.autograph`)函数使用户可以使用本机 Python 语法编写图形代码。
当前,此功能仅支持 Python 语法的有限子集。 [这个页面](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/autograph/LIMITATIONS.md)中提供了当前支持的语法元素的详细列表。
这样做的主要优点是,它使开发人员可以编写直观的 Python 代码来完成特定任务,然后自动将其转换为高性能的 TensorFlow Graph 代码。 这意味着开发人员可以以直观的 Python 形式描述基本的编程语言结构(例如循环和条件),而不是 TensorFlow 等效形式,并且具有可比的性能。
这样做的主要优点是,它使开发人员可以编写直观的 Python 代码来完成特定任务,然后自动将其转换为高性能的 TensorFlow 代码。 这意味着开发人员可以以直观的 Python 形式描述基本的编程语言结构(例如循环和条件),而不是 TensorFlow 等效形式,并且具有可比的性能。
在 TF 2.0 中,调用`tf.function`时会自动调用 AutoGraph。 用户不需要单独调用它。 `tf.autograph`模块包含低级模块。 初学者或中级用户几乎不必直接使用它们,现在可以安全地忽略详细信息。
......@@ -106,7 +106,7 @@ tf.Tensor(225, shape=(), dtype=int32)
如前所述,`SavedModel`格式用于生成当前计算图(数据流图)的可再现表示。 此表示独立于用于创建计算图的特定代码。 它也独立于用于构造该图的特定过程。 例如,`SavedModel`格式没有积极地区分使用本机 TensorFlow 操作,Keras 甚至`tf.function`创建的计算图。 尽管我们可以互换地将此计算图称为模型,但从技术上讲,它也可以被认为是训练有素的数学模型和围绕它编写的一些其他代码的组合,以执行支持...
# 使用 tf.function API
# 使用`tf.function` API
如前所述,`tf.function` API 使我们能够使用简单的 Python 编写 TensorFlow 图和模型。 让我们从构建一个简单模型开始,该模型接受一个数字或一个数字列表并返回列表中值的平方。 然后,我们将由此创建的模型导出为`SavedModel`格式。 这是本章以下大部分内容的重要步骤。 我们将几乎在所有地方都使用`SavedModel`工件。
......@@ -248,24 +248,24 @@ Result for output key output_0:
# TensorFlow 服务
**TensorFlow 服务****TensorFlow 扩展****TFX**)平台的组成部分。 顾名思义,它旨在用于服务于机器学习模型。 简而言之,它是专为生产环境设计的高性能服务系统。 TensorFlow Serving 的一个重要特征是它向下游用户公开了一致的 API,而与所服务模型的实际内容无关。 这使得快速进行实验和重新部署变得容易,而无需对其余软件堆栈进行任何其他更改。 它附带对 TensorFlow 模型的内置支持,并且可以扩展为服务于其他类型的模型。
**TensorFlow 服务****TensorFlow 扩展****TFX**)平台的组成部分。 顾名思义,它旨在用于服务于机器学习模型。 简而言之,它是专为生产环境设计的高性能服务系统。 TensorFlow 服务的一个重要特征是它向下游用户公开了一致的 API,而与所服务模型的实际内容无关。 这使得快速进行实验和重新部署变得容易,而无需对其余软件堆栈进行任何其他更改。 它附带对 TensorFlow 模型的内置支持,并且可以扩展为服务于其他类型的模型。
在本节中,我们将详细介绍 TensorFlow 服务。 从基本的安装和设置开始,以下小节通过一系列动手示例描述如何设置服务器来为`SavedModel`服务。 我们还将简要介绍 TensorFlow Serving 提供的一些关键 API。
在本节中,我们将详细介绍 TensorFlow 服务。 从基本的安装和设置开始,以下小节通过一系列动手示例描述如何设置服务器来为`SavedModel`服务。 我们还将简要介绍 TensorFlow 服务提供的一些关键 API。
# 设置 TensorFlow 服务
与 TensorFlow 平台的大多数其他组件一样,TensorFlow Serving 也可以通过多种方式安装。 这里推荐通过 Docker 镜像使用它,因为它相对简单。
与 TensorFlow 平台的大多数其他组件一样,TensorFlow 服务也可以通过多种方式安装。 这里推荐通过 Docker 镜像使用它,因为它相对简单。
如果容器镜像对您不起作用,请在[这个页面](https://www.tensorflow.org/tfx/serving/setup)上获取其他安装 TensorFlow Serving 方法的摘要。
如果容器镜像对您不起作用,请在[这个页面](https://www.tensorflow.org/tfx/serving/setup)上获取其他安装 TensorFlow 服务方法的摘要。
使用 Docker 设置 TensorFlow 服务涉及一个简单的步骤。 但是,此步骤需要将 Docker 安装在主机上。 有关设置 Docker 的说明,请参阅第 1 章, “TensorFlow 2.0 入门”或本章的“技术要求”部分。 您需要做的就是拉相关的 Docker 镜像以...
# 设置并运行推理服务器
现在我们已经设置了 TensorFlow Serving,让我们使用它来执行一些实际任务。 我们可以看看如何设置后端服务器以服务于前面几节中构建的`SavedModel`格式。 我们可以使用上一节中下载的 Docker 镜像来运行`SavedModel`格式。 为此,我们需要做两件事:
现在我们已经设置了 TensorFlow 服务,让我们使用它来执行一些实际任务。 我们可以看看如何设置后端服务器以服务于前面几节中构建的`SavedModel`格式。 我们可以使用上一节中下载的 Docker 镜像来运行`SavedModel`格式。 为此,我们需要做两件事:
* 将本地主机上包含模型的位置绑定到容器内的目录(`/models/<your-model_name>`
* 绑定网络端口 TensorFlow Serving 正在侦听主机上的网络端口
* 绑定网络端口 TensorFlow 服务正在侦听主机上的网络端口
该命令的一般形式如下:
......@@ -296,7 +296,7 @@ curl -X POST \
}
```
现在我们已经看到了如何使用 TensorFlow Serving 在后端服务器上提供`SavedModel`。 可通过 gRPC 和 RESTful API 访问此模型。 有关这些的详细信息,请参见以下链接:
现在我们已经看到了如何使用 TensorFlow 服务在后端服务器上提供`SavedModel`。 可通过 gRPC 和 RESTful API 访问此模型。 有关这些的详细信息,请参见以下链接:
* <https://www.tensorflow.org/tfx/serving/api_rest>
* <https://github.com/tensorflow/serving/blob/master/tensorflow_serving/apis/prediction_service.proto>
......
# AIY 项目和 TensorFlow Lite
本章详细介绍如何在低功耗嵌入式系统(例如边缘设备,移动系统(例如 Android,iOS 和 Raspberry))上部署经过训练的 **TensorFlow 2.0****TF2.0**)模型 Pi),Edge TPU 和 NVIDIA Jetson Nano。 本章还介绍了自己动手工具包的训练和部署模型,例如 Google **自己做人工智能****AIY**)工具包。 本章涵盖的其他主题是如何将经过训练的 **TensorFlow****TF**)模型转换为 **TensorFlow Lite****TFLite**)模型,主要区别 他们之间,以及两者的优势。
本章详细介绍如何在低功耗嵌入式系统(例如边缘设备,移动系统(例如 Android,iOS 和 Raspberry Pi),Edge TPU 和 NVIDIA Jetson Nano 上部署经过训练的 **TensorFlow 2.0****TF2.0**)模型。 本章还介绍了自己动手工具包的训练和部署模型,例如 Google **自己做人工智能****AIY**)工具包。 本章涵盖的其他主题是如何将经过训练的 **TensorFlow****TF**)模型转换为 **TensorFlow Lite****TFLite**)模型,主要区别 他们之间,以及两者的优势。
本章与前几章略有不同,从某种意义上说,它只是对 TF2.0 的更广泛关注的介绍。 也就是说,硬件领域...
......@@ -8,9 +8,9 @@
TFLite 是一组工具,可帮助开发人员在二进制尺寸较小且延迟较低的设备上运行 TF 模型。 TFLite 由两个主要组件组成:TFLite 解释器(`tf.lite.Interpreter`)和 TFLite 转换器(`tf.lite.TFLiteConverter`)。 TFLite 解释器实际上是在低功耗设备(例如手机,嵌入式 Linux 设备和微控制器)上运行 TFLite 模型的。 另一方面,TFLite 转换器在可用于训练 TF 模型的强大设备上运行,并将训练后的 TF 模型转换为解释器的有效形式。
TFLite 旨在简化在设备上执行机器学习的过程,而无需通过网络连接发送任何数据。 这样可以改善延迟时间(因为没有通过网络传输数据),提高了隐私性(因为没有数据会离开设备)和脱机功能(因为不需要 Internet 连接就可以在任何地方发送数据)。
TFLite 旨在简化在设备上执行机器学习的过程,而无需通过网络连接发送任何数据。 这样可以改善延迟时间(因为没有通过网络传输数据),提高了隐私性(因为没有数据会离开设备)和脱机功能(因为不需要互联网连接就可以在任何地方发送数据)。
TFLite 的一些关键功能包括针对设备的经过优化的优化解释器(它支持在二进制大小较小的设备上优化的一组核心操作),针对多种语言(例如 Swift,C,C ++,Java 和 Python)的 API ),预训练的模型和教程(新手可以在低功耗设备上轻松部署机器学习模型)。 TFLite 旨在通过硬件加速以及预融合的激活和偏差进行高效和优化。
TFLite 的一些关键功能包括针对设备的经过优化的优化解释器(它支持在二进制大小较小的设备上优化的一组核心操作),针对多种语言(例如 Swift,C,C++,Java 和 Python 的 API),预训练的模型和教程(新手可以在低功耗设备上轻松部署机器学习模型)。 TFLite 旨在通过硬件加速以及预融合的激活和偏差进行高效和优化。
TFLite 的基本开发工作流程是选择模型,转换模型,将其部署到所需的设备并优化模型。 该模型可以是任何东西,从`tf.keras`自定义训练模型到从 TF 本身获取的预训练模型。
......@@ -113,7 +113,7 @@ TF 支持两种类型的量化。 第一种量化方式是**训练后量化**。
Edge TPU 有两种可用方式:
* 珊瑚开发板,其中包含 TPU 以及预安装的所有必需软件和 API
* Coral 开发板,其中包含 TPU 以及预安装的所有必需软件和 API
* Edge TPU USB 扩展器,可在所需计算机上添加另一个处理器
USB 加速器与任何具有运行 Debian 的 USB 端口的 Linux 计算机兼容。 要设置 USB 加速器,请从[这里](https://dl.google.com/coral/edgetpu_api/edgetpu_api_latest.tar.gz)下载`.tar`文件,然后解压缩并运行`install.sh`
......
......@@ -387,6 +387,6 @@ TensorFlow Medium 博客还提供有关 TensorFlow 库和服务状态的许多
# 概要
本章介绍了两种将 TF 1.x 代码转换为 TF 2.0 代码的方法。 第一种方法是使用随附的升级脚本,该脚本会将所有 API 调用从`tf.x`更改为`tf.compat.v1.x`。 这允许 TF 1.x 代码在 TF 2.0 中运行,但不会从 TF 2.0 中带来的升级中受益。 第二种方法是将 TF 1.x 更改为惯用的 TF 2.0 代码,这涉及两个步骤。 第一步是将所有模型创建代码更改为 TF 2.0 代码,这涉及使用对函数的`sess.run`调用,以及将占位符和 dict 馈入函数的参数来更改张量。 使用`tf.layers` API 创建的模型与`tf.keras.layers`具有一对一的比较。 第二步是通过使用`tf.keras.Model.fit`或带有`tf.GradientTape`的自定义训练循环来升级训练管道。
本章介绍了两种将 TF 1.x 代码转换为 TF 2.0 代码的方法。 第一种方法是使用随附的升级脚本,该脚本会将所有 API 调用从`tf.x`更改为`tf.compat.v1.x`。 这允许 TF 1.x 代码在 TF 2.0 中运行,但不会从 TF 2.0 中带来的升级中受益。 第二种方法是将 TF 1.x 更改为惯用的 TF 2.0 代码,这涉及两个步骤。 第一步是将所有模型创建代码更改为 TF 2.0 代码,这涉及使用对函数的`sess.run`调用,以及将占位符和字典馈入函数的参数来更改张量。 使用`tf.layers` API 创建的模型与`tf.keras.layers`具有一对一的比较。 第二步是通过使用`tf.keras.Model.fit`或带有`tf.GradientTape`的自定义训练循环来升级训练管道。
TF 2.0 改变了 TensorFlow 代码的编写和组织方式。 TF 2.0 中的一些主要更改是对主模块中 API 的重组和清理。 这包括删除`tf.contrib`模块。 其他更改包括增加了代码范围内的急切执行,以简化调试和使用范围。 由于渴望执行,因此在 TF 2.0 中创建的变量的行为类似于普通的 Python 变量。 这意味着用于处理全局变量的 TF 1.x API 已过时,因此已在 TF 2.0 中删除。 这使我们到书的结尾!
\ No newline at end of file
# 第 1 节:TensorFlow 2.0-架构和 API 更改
本书的这一部分将为您简要概述 TensorFlow 2.0 中的新增功能,与 TensorFlow 1.x 的比较,惰性评估和热切执行之间的差异,架构级别的更改以及关于`tf.keras`的 API 使用情况 ]和`Estimator`
本书的这一部分将为您简要概述 TensorFlow 2.0 中的新增功能,与 TensorFlow 1.x 的比较,惰性评估和热切执行之间的差异,架构级别的更改以及关于`tf.keras``Estimator`的 API 使用情况
本节包含以下章节:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册