提交 9221958e 编写于 作者: W wizardforcel

2020-09-09 17:35:08

上级 3b94bf3c
......@@ -70,22 +70,4 @@ var = tf.Variable([3, 3])
警告或重要提示如下所示。
提示和技巧如下所示。
# 保持联系
始终欢迎读者的反馈。
**一般反馈**:如果您对本书的任何方面都有疑问,请在您的消息主题中提及书名,并通过`customercare@packtpub.com`向我们发送电子邮件。
**勘误表**:尽管我们已尽一切努力确保内容的准确性,但还是会发生错误。 如果您在这本书中发现错误,请向我们报告,我们将不胜感激。 请访问 [www.packt.com/submit-errata](http://www.packt.com/submit-errata) ,选择您的书籍,点击勘误提交表格链接,然后输入详细信息。
**盗版**:如果您在互联网上以任何形式看到我们的作品的任何非法副本,请向我们提供位置地址或网站名称,我们将不胜感激。 请通过`copyright@packt.com`与我们联系,并提供材料链接。
**如果您有兴趣成为作家**:如果您有一个专业的话题,并且对写作或撰写书籍感兴趣,请访问 [authors.packtpub.com [](http://authors.packtpub.com/)
# 评论
请留下评论。 阅读和使用本书后,为什么不在您购买本书的网站上留下评论? 然后,潜在的读者可以查看并使用您的公正意见做出购买决定,Packt 的我们可以理解您对我们产品的看法,我们的作者可以在书中看到您的反馈。 谢谢!
有关 Packt 的更多信息,请访问 [packt.com](http://www.packt.com/)
\ No newline at end of file
提示和技巧如下所示。
\ No newline at end of file
......@@ -11,7 +11,7 @@ image1 = tf.zeros([7, 28, 28, 3]) # example-within-batch by height by width by
```
尽管 TensorFlow 通常可以用于许多数值计算领域,尤其是机器学习,但其主要研究和开发领域是**深层神经网络** **DNN** )的应用。 ),它已在语音和声音识别等不同领域使用,例如,在如今广泛使用的声控助手中; 基于文本的应用程序,例如语言翻译器; 图像识别,例如系外行星搜寻,癌症检测和诊断; 以及时间序列应用程序(例如推荐系统)。
尽管 TensorFlow 通常可以用于许多数值计算领域,尤其是机器学习,但其主要研究和开发领域是**深层神经网络****DNN**)的应用,它已在语音和声音识别等不同领域使用,例如,在如今广泛使用的声控助手中; 基于文本的应用程序,例如语言翻译器; 图像识别,例如系外行星搜寻,癌症检测和诊断; 以及时间序列应用程序(例如推荐系统)。
在本章中,我们将讨论以下内容:
......@@ -22,9 +22,9 @@ image1 = tf.zeros([7, 28, 28, 3]) # example-within-batch by height by width by
# 审视现代 TensorFlow 生态系统
让我们讨论**渴望执行**。 TensorFlow 的第一个化身包括构造由操作和张量组成的计算图,随后必须在 Google 所谓的会话中对其进行评估(这称为声明性编程)。 这仍然是编写 TensorFlow 程序的常用方法。 但是,急于执行的功能(以研究形式从版本 1.5 开始可用,并从版本 1.7 被烘焙到 TensorFlow 中)需要立即评估操作,结果是可以将张量像 NumPy 数组一样对待(这被称为命令式编程)。
让我们讨论**急切执行**。 TensorFlow 的第一个化身包括构造由操作和张量组成的计算图,随后必须在 Google 所谓的会话中对其进行评估(这称为声明性编程)。 这仍然是编写 TensorFlow 程序的常用方法。 但是,急于执行的功能(以研究形式从版本 1.5 开始可用,并从版本 1.7 被烘焙到 TensorFlow 中)需要立即评估操作,结果是可以将张量像 NumPy 数组一样对待(这被称为命令式编程)。
谷歌表示,渴望执行是研究和开发的首选方法,但计算图对于服务 TensorFlow 生产应用程序将是首选。
谷歌表示,急切执行是研究和开发的首选方法,但计算图对于服务 TensorFlow 生产应用程序将是首选。
`tf.data`是一种 API,可让您从更简单,可重复使用的部件中构建复杂的数据输入管道。 最高级别的抽象是`Dataset`,它既包含张量的嵌套结构元素,又包含作用于这些元素的转换计划。 有以下几种类:
......@@ -33,21 +33,21 @@ image1 = tf.zeros([7, 28, 28, 3]) # example-within-batch by height by width by
* `Dataset`由记录组成,这些记录是至少一个文本文件(`TFRecordDataset`)中的行
* 还有一个类表示通过`Dataset``tf.data.Iterator`)进行迭代的状态
让我们继续进行**估计** **ator** ,这是一个高级 API,可让您构建大大简化的机器学习程序。 估算员负责培训,评估,预测和导出服务。
让我们继续进行**估计器**,这是一个高级 API,可让您构建大大简化的机器学习程序。 估算员负责培训,评估,预测和导出服务。
**Te** **nsorFlow.js** 是 API 的集合,可让您使用底层 JavaScript 线性代数库或高层 API 来构建和训练模型。 因此,可以训练模型并在浏览器中运行它们。
**TensorFlow.js** 是 API 的集合,可让您使用底层 JavaScript 线性代数库或高层 API 来构建和训练模型。 因此,可以训练模型并在浏览器中运行它们。
**TensorFlow Lite** 是适用于移动和嵌入式设备的 TensorFlow 的轻量级版本。 它由运行时解释器和一组实用程序组成。 这个想法是您在功率更高的机器上训练模型,然后使用实用程序将模型转换为`.tflite`格式。 然后将模型加载到您选择的设备中。 在撰写本文时,使用 C ++ API 在 Android 和 iOS 上支持 TensorFlow Lite,并且具有适用于 Android 的 Java 包装器。 如果 Android 设备支持 **Android 神经​​网络** **ANN** )API 进行硬件加速,则解释器将使用此 API,否则它将默认使用 CPU 执行。
**TensorFlow Lite** 是适用于移动和嵌入式设备的 TensorFlow 的轻量级版本。 它由运行时解释器和一组实用程序组成。 这个想法是您在功率更高的机器上训练模型,然后使用实用程序将模型转换为`.tflite`格式。 然后将模型加载到您选择的设备中。 在撰写本文时,使用 C ++ API 在 Android 和 iOS 上支持 TensorFlow Lite,并且具有适用于 Android 的 Java 包装器。 如果 Android 设备支持 **Android 神经​​网络****ANN**)API 进行硬件加速,则解释器将使用此 API,否则它将默认使用 CPU 执行。
**TensorFlow Hub** 是一个旨在促进机器学习模型的可重用模块的发布,发现和使用的库。 在这种情况下,模块是 TensorFlow 图的独立部分,包括其权重和其他资产。 该模块可以通过称为转移学习的方法在不同任务中重用。 这个想法是您在大型数据集上训练模型,然后将适当的模块重新用于您的其他但相关的任务。 这种方法具有许多优点-您可以使用较小的数据集训练模型,可以提高泛化能力,并且可以大大加快训练速度。
例如,ImageNet 数据集以及许多不同的神经网络架构(例如`inception_v3`)已非常成功地用于解决许多其他图像处理训练问题。
**TensorFlow Extended****TFX** )是基于 TensorFlow 的通用机器学习平台。 迄今为止,已开源的库包括 TensorFlow 转换,TensorFlow 模型分析和 TensorFlow 服务。
**TensorFlow Extended****TFX**)是基于 TensorFlow 的通用机器学习平台。 迄今为止,已开源的库包括 TensorFlow 转换,TensorFlow 模型分析和 TensorFlow 服务。
`tf.keras`是用 Python 编写的高级神经网络 API,可与 TensorFlow(和其他各种张量工具)接口。 `tf.k` `eras`支持快速原型设计,并且用户友好,模块化且可扩展。 它支持卷积和循环网络,并将在 CPU 和 GPU 上运行。 Keras 是 TensorFlow 2 中开发的首选 API。
**TensorBoard** 是一套可视化工具,支持对 TensorFlow 程序的理解,调试和优化。 它与渴望和图形执行环境兼容。 您可以在训练期间使用 TensorBoard 可视化模型的各种指标。
**TensorBoard** 是一套可视化工具,支持对 TensorFlow 程序的理解,调试和优化。 它与急切和图形执行环境兼容。 您可以在训练期间使用 TensorBoard 可视化模型的各种指标。
TensorFlow 的一项最新开发(在撰写本文时仍处于实验形式)将 TensorFlow 直接集成到 Swift 编程语言中。 Swift 中的 TensorFlow 应用程序是使用命令性代码编写的,即命令急切地(在运行时)执行的代码。 Swift 编译器会自动将此源代码转换为一个 TensorFlow 图,然后在 CPU,GPU 和 TPU 上以 TensorFlow Sessions 的全部性能执行此编译后的代码。
......@@ -111,7 +111,7 @@ else:
print('Running on CPU')
```
# 声明渴望的变量
# 声明急切变量
声明 TensorFlow eager 变量的方法如下:
......@@ -362,7 +362,7 @@ tf.matmul(u, tf.transpose(a=v))
再次注意,默认整数类型为`tf.int32`,默认浮点类型为`tf.float32`
可用于构成计算图一部分的张量的所有操作也可用于渴望执行变量。
可用于构成计算图一部分的张量的所有操作也可用于急切执行变量。
[这个页面](https://www.tensorflow.org/api_guides/python/math_ops)上有这些操作的完整列表。
......@@ -485,7 +485,7 @@ s
<tf.Tensor: id=279, shape=(5,), dtype=int32, numpy=array([16, 4, 0, 4, 36], dtype=int32)>
```
请注意,在此示例中,Python 变量`x``y`被转换为张量,然后`y``x`广播。 因此,例如,第一计算是*(1-5) <sup>2</sup> = 16*
请注意,在此示例中,Python 变量`x``y`被转换为张量,然后`y``x`广播。 因此,例如,第一计算是`(1 - 5)^2 = 16`
# 求平均值
......@@ -817,4 +817,4 @@ assert f1(x,y).numpy() == f2(x,y).numpy()
在本章中,我们通过查看一些说明一些基本操作的代码片段开始熟悉 TensorFlow。 我们对现代 TensorFlow 生态系统以及如何安装 TensorFlow 进行了概述。 我们还研究了一些管家操作,一些急切操作以及各种 TensorFlow 操作,这些操作在本书的其余部分中将是有用的。 在 [www.youtube.com/watch?v=k5c-vg4rjBw](https://www.youtube.com/watch?v=k5c-vg4rjBw) 上对 TensorFlow 2 进行了出色的介绍。
另请参阅*附录 A* ,以获得`tf1.12``tf2`转换工具的详细信息。 在下一章中,我们将介绍 Keras,这是 TensorFlow 2 的高级 API。
\ No newline at end of file
另请参阅“附录 A”,以获得`tf1.12``tf2`转换工具的详细信息。 在下一章中,我们将介绍 Keras,这是 TensorFlow 2 的高级 API。
\ No newline at end of file
......@@ -52,7 +52,7 @@ Keras 可能是不寻常的,因为它具有作为独立开源项目维护的
尽管 TensorFlow 在`tf.keras`模块中确实具有 Keras 的完整实现,但它独立于 TensorFlow 进行维护。 默认情况下,该实现具有 TensorFlow 特定的增强功能,包括对急切执行的支持。
急切的执行意味着代码的执行是命令式编程环境,而不是基于图的环境,这是在 TensorFlow(v1.5 之前)的初始产品中工作的唯一方法。 这种命令式(即刻)样式允许直观的调试,快速的开发迭代,支持 TensorFlow `SavedModel`格式,并内置支持对 CPU,GPU 甚至 Google 自己的硬件 **Tensor 进行分布式培训 处理单元** **TPU** )。
急切的执行意味着代码的执行是命令式编程环境,而不是基于图的环境,这是在 TensorFlow(v1.5 之前)的初始产品中工作的唯一方法。 这种命令式(即刻)样式允许直观的调试,快速的开发迭代,支持 TensorFlow `SavedModel`格式,并内置支持对 CPU,GPU 甚至 Google 自己的硬件 **Tensor 进行分布式培训 处理单元****TPU**)。
TensorFlow 实施还支持`tf.data`,分发策略,导出模型(可通过 TensorFlow Lite 部署在移动和嵌入式设备上)以及用于表示和分类结构化数据的功能列。
......@@ -122,7 +122,7 @@ const
<tf.Tensor: id=1, shape=(2, 2), dtype=float16, numpy= array([[42., 24.], [11., 99.]], dtype=float16)>
```
渴望不启用,输出将如下所示:
急切不启用,输出将如下所示:
```py
<tf.Tensor 'Const:0' shape=(2, 2) dtype=float16>
......@@ -130,7 +130,7 @@ const
# 硬数据类型
Keras **数据类型** **dtypes** )与 TensorFlow Python 数据类型相同,如下表所示:
Keras **数据类型****dtypes**)与 TensorFlow Python 数据类型相同,如下表所示:
| Python 类型 | 描述 |
| --- | --- |
......
......@@ -4,7 +4,7 @@
在本章中,我们将介绍以下主题:
* 将数据呈现给**人工神经网络** **twork****AN** **N**
* 将数据呈现给**人工神经网络** **twork****AN** **N**
* 神经网络层
* 梯度下降算法的梯度计算
* 损失函数
......@@ -13,7 +13,7 @@
Google 推荐的将数据呈现给 TensorFlow ANN 的规范方法是通过由`tf.data.Dataset`对象和`tf.data.Iterator`方法组成的数据管道。 `tf.data.Dataset`对象由一系列元素组成,其中每个元素包含一个或多个张量对象。 `tf.data.Iterator`是一种用于遍历数据集以便可以访问其中的连续单个元素的方法。
我们将研究构建数据管道的两种重要方法,首先是从内存中的 **NumPy** 数组,其次是从**逗号分隔值** **CSV** )文件。 我们还将研究二进制 TFRecord 格式。
我们将研究构建数据管道的两种重要方法,首先是从内存中的 **NumPy** 数组,其次是从**逗号分隔值****CSV**)文件。 我们还将研究二进制 TFRecord 格式。
# 将 NumPy 数组与数据集结合使用
......@@ -269,7 +269,7 @@ print("Scores: ",item[2].values.numpy())
# 一键编码
**一键编码** **OHE** )是根据数据标签构造张量的方法,在每个标签中,与标签值相对应的每个元素中的数字为 1,其他地方为 0; 也就是说,张量中的位之一是热的(1)。
**一键编码****OHE**)是根据数据标签构造张量的方法,在每个标签中,与标签值相对应的每个元素中的数字为 1,其他地方为 0; 也就是说,张量中的位之一是热的(1)。
# OHE 示例 1
......
# 使用 TensorFlow 2 进行监督的机器学习
在本章中,我们将讨论并举例说明 TensorFlow 2 在以下情况下的监督机器学习问题中的使用:线性回归,逻辑回归和 **k 最近邻** **KNN** ) 。
在本章中,我们将讨论并举例说明 TensorFlow 2 在以下情况下的监督机器学习问题中的使用:线性回归,逻辑回归和 **k 最近邻****KNN**) 。
在本章中,我们将研究以下主题:
......@@ -9,7 +9,7 @@
* 我们的第一个线性回归示例
* 波士顿住房数据集
* 逻辑回归(分类)
* **k 最近邻居** **KNN**
* **k 最近邻居****KNN**
# 监督学习
......
......@@ -2,7 +2,7 @@
包括 ConvNet(CNN)在内的许多神经网络体系结构的主要缺点之一是它们不允许处理顺序数据。 换句话说,一个完整的功能(例如图像)必须一次全部呈现。 因此,输入是固定长度张量,而输出必须是固定长度张量。 先前特征的输出值也不会以任何方式影响当前特征。 同样,所有输入值(和输出值)都应视为彼此独立。 例如,在我们的`fashion_mnist`模型(第 4 章和“使用 TensorFlow 2” 的有监督机器学习)中,每个输入时尚图像都独立于并且完全不了解先前图像。
**循环神经网络** **RNN** )克服了这个问题,并使许多新的应用成为可能。
**循环神经网络****RNN**)克服了这个问题,并使许多新的应用成为可能。
在本章中,我们将研究以下主题:
......@@ -51,7 +51,7 @@ RNN 的每个单独项目到网络的输入称为**时间步长**。 因此,
展开式循环神经网络
RNN 在称为**的时间反向传播** **BPTT** )的过程中通过反向传播进行训练。 在此可以想象 RNN 的展开(也称为**展开**)会创建一系列神经网络,并且会针对每个时间步长计算误差并将其合并,以便可以将网络中的权重更新为 通常与反向传播。 例如,为了计算梯度,从而计算误差,在时间步 *t = 6* 时,我们将向后传播五个步,并对梯度求和。 但是,在尝试学习长期依赖关系时(即在相距很远的时间步之间),这种方法存在问题,因为梯度可能变得太小而使学习变得不可能或非常缓慢,或者它们可能变得 太大并淹没了网络。 这被称为消失/爆炸梯度问题,并且已经发明了各种修改方法来解决它,包括**长短期记忆****LSTM** )网络和**门控循环单元****GRU** **s** ),我们将在以后使用。
RNN 在称为**的时间反向传播****BPTT**)的过程中通过反向传播进行训练。 在此可以想象 RNN 的展开(也称为**展开**)会创建一系列神经网络,并且会针对每个时间步长计算误差并将其合并,以便可以将网络中的权重更新为 通常与反向传播。 例如,为了计算梯度,从而计算误差,在时间步 *t = 6* 时,我们将向后传播五个步,并对梯度求和。 但是,在尝试学习长期依赖关系时(即在相距很远的时间步之间),这种方法存在问题,因为梯度可能变得太小而使学习变得不可能或非常缓慢,或者它们可能变得 太大并淹没了网络。 这被称为消失/爆炸梯度问题,并且已经发明了各种修改方法来解决它,包括**长短期记忆****LSTM**)网络和**门控循环单元****GRU** **s**),我们将在以后使用。
下图显示了有关展开(或展开)的更多详细信息:
......@@ -364,7 +364,7 @@ embedding_dimension = 256
recurrent_nn_units = 1024
```
我们正在使用 GRU,在 **CUDA 深度神经网络** **cuDNN** )库中,如果代码在 GPU 上运行,则可以使用这些例程进行快速计算。 GRU 是在 RNN 中实现内存的一种方式。 下一节将实现此想法,如下所示:
我们正在使用 GRU,在 **CUDA 深度神经网络****cuDNN**)库中,如果代码在 GPU 上运行,则可以使用这些例程进行快速计算。 GRU 是在 RNN 中实现内存的一种方式。 下一节将实现此想法,如下所示:
```py
if tf.test.is_gpu_available():
......
# 第 3 节:TensorFlow 2.00 Alpha 的神经网络应用
在本节中,我们将研究许多**人工神经网络** **ANN** )应用。 这些包括图像识别,神经样式转换,文本样式生成,时尚识别以及电影评论的 IMDb 数据库的语义分析。
在本节中,我们将研究许多**人工神经网络****ANN**)应用。 这些包括图像识别,神经样式转换,文本样式生成,时尚识别以及电影评论的 IMDb 数据库的语义分析。
本节包含以下章节:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册