提交 e958d0bd 编写于 作者: W wizardforcel

2021-01-11 23:06:00

上级 c2340830
......@@ -51,7 +51,7 @@ from tensorflow.keras... import ...
本书中的代码示例全部以 **Python 3** 编写,以支持 **Python 2** 于 2020 年结束。
在硬件上,Keras 在 CPU,GPU 和 Google 的 TPU 上运行。 在本书中,我们将在 CPU 和 NVIDIA GPU(特别是 GTX 1060,GTX 1080Ti,RTX 2080Ti,V100 和 Quadro RTX 8000 型号)上进行测试:
在硬件上,Keras 在 CPU,GPU 和 Google 的 TPU 上运行。 在本书中,我们将在 CPU 和 NVIDIA GPU(特别是 GTX 1060,GTX 1080Ti,RTX 2080Ti,V100 和 Quadro RTX 8000)上进行测试:
![A screenshot of a cell phone Description automatically generated](img/B14853_01_01.png)
......@@ -857,7 +857,7 @@ RNN 分类器与之前的两个模型之间有两个主要区别。 首先是`in
![](img/B14853_01_024.png) (Equation 1.5.1)
在此等式中,`b`是偏差,而`W``U`被称为递归核(先前输出的权重)和核(当前输入的权重) ), 分别。 下标`t`用于指示序列中的位置。 对于具有`units=256``SimpleRNN`层,参数总数为`256 + 256×256 + 256×28 = 72,960`,对应于`b``W`和个贡献。
在此等式中,`b`是偏差,而`W``U`被称为循环核(先前输出的权重)和核(当前输入的权重) ), 分别。 下标`t`用于指示序列中的位置。 对于具有`units=256``SimpleRNN`层,参数总数为`256 + 256×256 + 256×28 = 72,960`,对应于`b``W`和个贡献。
下图显示了用于分类任务的`SimpleRNN`和 RNN 的图。 使`SimpleRNN`比 RNN 更简单的是缺少输出值`o[t] = Vh[t] + c`在计算`softmax`函数之前:
......
......@@ -1532,7 +1532,7 @@ python3 ssd-11.6.1.py –-restore-weights=<weights_file>
python3 ssd-11.6.1.py --restore-weights=ResNet56v2-4layer-extra_anchors-drinks-200.h5 --image-file=dataset/drinks/0010050.jpg --evaluate
```
如果型号权重文件名中包含单词`norm`,请附加`--normalize option`。
如果模型权重文件名中包含单词`norm`,请附加`--normalize option`。
“列表 11.13.1”:`ssd-11.6.1.py`
......
......@@ -183,7 +183,7 @@ AutoML 自然语言使上传数据集和训练模型变得容易。 在我们的
# 训练模型
创建数据集并对其进行完全标记后,即可对模型进行训练。 单击 TRAIN NEW MODEL 按钮,通过提供模型名称来启动异步训练过程。 型号名称最多可以包含 32 个字符,并且可以包含字母,数字和下划线。 模型训练所需的时间取决于训练数据的数量和变化。 训练模型可能需要几分钟到几个小时。 一旦模型训练完成,就会向已注册的电子邮件 ID 发送电子邮件通知。
创建数据集并对其进行完全标记后,即可对模型进行训练。 单击 TRAIN NEW MODEL 按钮,通过提供模型名称来启动异步训练过程。 模型名称最多可以包含 32 个字符,并且可以包含字母,数字和下划线。 模型训练所需的时间取决于训练数据的数量和变化。 训练模型可能需要几分钟到几个小时。 一旦模型训练完成,就会向已注册的电子邮件 ID 发送电子邮件通知。
![](img/4dd42840-8f39-44ed-a8e7-6f794d281578.png)
......@@ -756,7 +756,7 @@ JSON 请求正文中的`config`字段是`RecognitionConfig`对象的体现,其
| `enableWordTimeOffsets` | `boolean` | 这是个可选的选项。 如果设置为`true`,则转录语音中的每个单词都将在音频信号中标记其开始和结束时间。 默认情况下,此参数的值为`false`。 |
| `enableAutomaticPunctuation` | `boolean` | 此可选字段仅影响所选的语言,当前可作为实验字段使用。 启用后,转录将包括标点文本。 默认情况下,该参数设置为`false`。 |
| `metadata` | `object` | 这是一个可选字段,提供有关音频信号的元数据。 该字段是`RecognitionMetadata`类型,包含以下子字段:`interactionType`/`industryNaicsCodeOfAudio`/`microphoneDistance`/`originalMediaType`/`recordingDeviceType`/`recordingDeviceName`/`originalMimeType`/`obfuscatedId`/`audioTopic`元数据为模型提供了其他提示,这些提示用于更准确和上下文相关的转录。 |
| `model` | `string` | 这是一个可选字段,用于选择适当的机器学习模型以执行语音到文本的识别。 选择合适的识别模型可以大大提高转录的准确率。 如果未设置模型,则根据`RecognitionConfig`中的参数选择运行时模型。 以下是 GCP 上当前可用型号的列表: |
| `model` | `string` | 这是一个可选字段,用于选择适当的机器学习模型以执行语音到文本的识别。 选择合适的识别模型可以大大提高转录的准确率。 如果未设置模型,则根据`RecognitionConfig`中的参数选择运行时模型。 以下是 GCP 上当前可用模型的列表: |
| | | `command_and_search`:最适合语音命令或语音搜索的模型 |
| | | `phone_call`:最适合电话对话转录的模型 |
| | | `video`:最适合从原始视频数据中提取音频信号的模型 |
......
......@@ -292,7 +292,7 @@ Keras 是 Python 的深度学习框架,可以帮助我们识别和训练几乎
* Keras 不处理低级计算。 相反,他们使用另一个名为后端的库来执行工作。 因此,Keras 是具有低级 API 的高级 API 包装器,可以在 TensorFlow,CNTK 或 Theano 之上运行。
* Keras 的高级 API 处理我们如何创建模型,定义级别或设置各种输入输出模型。 它允许相同的代码在 CPU 或 GPU 上无缝运行。
* Keras 具有一些主要的重要特征。 它具有易于使用的 API 来快速构建深度学习模型的原型。
* 它支持卷积(PC 视觉)网络,递归(序列)网络及其任意组合。
* 它支持卷积(PC 视觉)网络,循环(序列)网络及其任意组合。
* 它包含各种任意的网络架构。 支持多输入或多输出,层共享,模型共享等。 这包括多个模型。
* Keras 本质上非常适合构建深度学习模型,从生成的对手网络到图灵机。
* Keras 是一个模型库,为深入的教育系统的发展提供了高级构建块。
......@@ -544,7 +544,7 @@ SAVED_MODEL_PATH = KERAS_EXPORT_DIRS[-1]
* **输出数据格式**:用于预测输出文件的格式类型。
* **输入路径**:需要存储在 Google Cloud 存储中的输入数据文件的 URI。
* **输出路径**:云中要通过提供预测服务保存输出的位置。 您的项目需要被允许写到这个地方。
* **模型名称和版本名称**:您希望从中接收投影的型号名称和版本。 如果未指定版本,则使用模型的默认版本。 如果愿意,可以使用未部署的 SavedModel Cloud 存储路径,称为 Model URI。
* **模型名称和版本名称**:您希望从中接收投影的模型名称和版本。 如果未指定版本,则使用模型的默认版本。 如果愿意,可以使用未部署的 SavedModel Cloud 存储路径,称为 Model URI。
* **模型 URI**:您要从中接收投影的模型名称和版本。 如果未指定版本,则使用模型的默认版本。 如果愿意,可以使用未部署的 SavedModel Cloud 存储路径,称为 Model URI。
......
......@@ -105,7 +105,7 @@ Google 已经开发了 TPU,以加速 ML 工作流程。 借助 Cloud TPU,用
* 受计算限制的模型在 TPU v3 上具有显着的优势。
* 数据不适合 TPU v2 内存但适合 TPU v3 内存的情况会有所帮助。
* 批量大小不适合 TPU v2 的新型号可以再次获得性能优势。
* 批量大小不适合 TPU v2 的新模型可以再次获得性能优势。
* 在某些区域中,模型是输入绑定的,或者模型是内存绑定的; 在那里,您可能看不到这种性能提升。 因此,在确定 TPU 版本之前,请在预期用例的背景下进行性能基准测试和成本值分析。
# 可用的 TPU 配置
......
......@@ -282,7 +282,7 @@ gcloud ai-platform local predict --model-dir local-or-cloud-storage-path-to-mode
# 部署模型及其版本
Google Cloud AI 平台使用模型和版本资源来组织您训练有素的模型。 AI 平台是学习机模型的容器。 在 AI 平台中,创建数据库资源以部署模型,构建模型版本,然后将模型版本连接到存储在云存储中的模型文件。 您可以使用`gcloud`控制台为您的产品版本构建默认工具,并在不附带括号的情况下填写您的首选型号名称,如下所示:
Google Cloud AI 平台使用模型和版本资源来组织您训练有素的模型。 AI 平台是学习机模型的容器。 在 AI 平台中,创建数据库资源以部署模型,构建模型版本,然后将模型版本连接到存储在云存储中的模型文件。 您可以使用`gcloud`控制台为您的产品版本构建默认工具,并在不附带括号的情况下填写您的首选模型名称,如下所示:
```py
gcloud ai-platform models create "[YOUR-MODEL-NAME]"
......
......@@ -22,7 +22,7 @@
“第 5 章”,“移动神经网络和 CNN”讨论了用于在实时应用中进行 CNN 工作的移动神经网络的需求。 我们还将讨论 Google 推出的两种基准 MobileNet 架构-MobileNet 和 MobileNetV2。 稍后,我们将讨论 MobileNet 与对象检测网络(例如 SSD)的成功组合,以在移动设备上实现对象检测。
“第 6 章”,“循环神经网络”解释了最重要的深度学习模型之一,循环神经网络(RNN),其架构以及 RNN 的进化路径。 稍后,我们将讨论按递归层分类的各种架构,包括原始 RNN,LSTM,GRU 和双向 RNN,并应用原始架构来编写我们自己的《战争与和平》(毫无意义)。 我们还将介绍双向架构,该架构允许模型保留序列的过去和将来上下文中的信息。
“第 6 章”,“循环神经网络”解释了最重要的深度学习模型之一,循环神经网络(RNN),其架构以及 RNN 的进化路径。 稍后,我们将讨论按循环层分类的各种架构,包括原始 RNN,LSTM,GRU 和双向 RNN,并应用原始架构来编写我们自己的《战争与和平》(毫无意义)。 我们还将介绍双向架构,该架构允许模型保留序列的过去和将来上下文中的信息。
“第 7 章”,“生成对抗网络”解释了最有趣的深度学习模型之一,生成对抗网络(GANs)及其演化路径。 我们还将以图像生成为例来说明各种 GAN 架构。 我们还将探索四种 GAN 架构,包括原始 GAN,深度卷积 GAN,条件 GAN 和信息最大化 GAN。
......
......@@ -2,7 +2,7 @@
在本章中,我们将解释最重要的深度学习模型之一,即**循环神经网络****RNNs**)。 我们将首先回顾什么是 RNN,以及为什么它们非常适合处理顺序数据。 在简要介绍了 RNN 模型的发展路径之后,我们将说明根据不同形式的输入和输出数据以及工业示例进行分类的各种 RNN 架构。 我们将找出问题的答案,例如“我们如何仅生成一个输出?”,“输出可以是序列吗?”,和“仅对一个输入单元有效吗?”。
接下来,我们将讨论按递归层分类的几种架构。 首先,我们将应用基本的 RNN 架构来编写我们自己的《战争与和平》。 具有原始架构的 RNN 不能很好地保存长期依赖的信息。 为了解决这个问题,我们将学习*内存增强型*架构,包括长短期内存和门控循环单元。 我们还将在股票价格预测中采用门控架构。 最后,由于对捕获过去的信息不满意,我们将引入一种双向架构,该架构允许该模型从序列的过去和将来上下文中保留信息。 具有 LSTM 的双向模型将用于对电影评论的情感进行分类。
接下来,我们将讨论按循环层分类的几种架构。 首先,我们将应用基本的 RNN 架构来编写我们自己的《战争与和平》。 具有原始架构的 RNN 不能很好地保存长期依赖的信息。 为了解决这个问题,我们将学习*内存增强型*架构,包括长短期内存和门控循环单元。 我们还将在股票价格预测中采用门控架构。 最后,由于对捕获过去的信息不满意,我们将引入一种双向架构,该架构允许该模型从序列的过去和将来上下文中保留信息。 具有 LSTM 的双向模型将用于对电影评论的情感进行分类。
在本章中,我们将介绍以下主题:
......@@ -36,7 +36,7 @@
# RNN 的演进路径
RNN 实际上具有悠久的历史,最早是在 1980 年代开发的。 霍普菲尔德网络是第一个具有递归链接的神经网络,它是约翰·霍普菲尔德(John Hopfield)在《Neurons with graded response have collective computational properties like those of two-state neurons》中发明的。
RNN 实际上具有悠久的历史,最早是在 1980 年代开发的。 霍普菲尔德网络是第一个具有循环链接的神经网络,它是约翰·霍普菲尔德(John Hopfield)在《Neurons with graded response have collective computational properties like those of two-state neurons》中发明的。
受 Hopfield 网络的启发,在《及时发现结构》中引入了全连接神经网络 -- Elman 网络。 Elman 网络具有一个隐藏层和一组连接到该隐藏层的上下文单元。 在每个时间步,上下文单元都会跟踪隐藏单元的先前值。
......@@ -818,11 +818,11 @@ He said, "Machine __ combines computer science and statistics."
对于仅学习前三个单词的 RNN 模型来说,很难生成适合整个句子的下一个单词。 但是,如果给出了剩余单词,则该模型将更好地捕获上下文,并且更有可能预测下一个单词,即`learning`。 为了克服单向 RNN 的局限性,引入了**双向 RNN****BRNN**)。
在 BRNN 中,隐藏层由两个独立的递归层组成。 这两层是相反的方向:一层为正时间方向,也称为**正向**,其中输入信息从过去流向当前状态。 另一个为负时间方向,也称为**反向**,其中从将来到当前状态处理输入信息。 下图描述了 BRNN 的一般结构:
在 BRNN 中,隐藏层由两个独立的循环层组成。 这两层是相反的方向:一层为正时间方向,也称为**正向**,其中输入信息从过去流向当前状态。 另一个为负时间方向,也称为**反向**,其中从将来到当前状态处理输入信息。 下图描述了 BRNN 的一般结构:
![](img/4ee06bf0-c7d5-426e-a033-fff39a4b4629.png)
在此,`f ->``f <-`分别表示正向和反向递归层。 它们连接在一起,形成隐藏层`f`,并保留来自过去和将来状态的信息。
在此,`f ->``f <-`分别表示正向和反向循环层。 它们连接在一起,形成隐藏层`f`,并保留来自过去和将来状态的信息。
当需要并提供完整的上下文(包括过去和将来的信息)时,BRNN 特别有用。 例如,在词性标记,实体识别或手写识别中,可以通过了解当前单词或字母之后的单词或字母来提高性能。 其他出色的用例包括语音识别,机器翻译和图像字幕。
......@@ -935,6 +935,6 @@ Epoch 00018: early stopping
我们刚刚完成了关于 DL 架构-RNN 的学习旅程的重要部分! 在本章中,我们更加熟悉了 RNN 及其变体。 我们从 RNN 是什么,RNN 的发展路径以及它们如何成为顺序建模的最新解决方案入手。 我们还研究了四种 RNN 架构,并按输入和输出数据的形式进行了分类,并提供了一些工业示例。
接下来,我们讨论按递归层分类的各种架构,包括原始 RNN,LSTM,GRU 和双向 RNN。 首先,我们应用了原始架构来编写我们自己的《战争与和平》 ,尽管有点荒谬。 我们通过使用 LSTM 架构 RNN 生成了更好的版本。 股票价格预测中采用了另一种内存增强型架构 GRU。
接下来,我们讨论按循环层分类的各种架构,包括原始 RNN,LSTM,GRU 和双向 RNN。 首先,我们应用了原始架构来编写我们自己的《战争与和平》 ,尽管有点荒谬。 我们通过使用 LSTM 架构 RNN 生成了更好的版本。 股票价格预测中采用了另一种内存增强型架构 GRU。
最后,除了过去的信息外,我们还引入了双向架构,该模型允许模型保留序列的过去和将来上下文中的信息。 我们还使用双向 RNN 和 LSTM 进行电影评论情感分类。 在下一章中,我们将探讨 DL 模型的另一项伟大发明:生成对抗网络。
\ No newline at end of file
......@@ -365,7 +365,7 @@ CNN 的核心是一个称为卷积的操作(在计算机视觉和图像处理
# 将字母输入网络
在我们看到递归层如何产生输出之前,重要的是要学习如何将字母集提供给网络。 单热编码使我们能够以非常有效的方式执行此操作:
在我们看到循环层如何产生输出之前,重要的是要学习如何将字母集提供给网络。 单热编码使我们能够以非常有效的方式执行此操作:
![](img/82595ac0-af4d-4777-8394-1939beb4c4b7.png)
......@@ -389,7 +389,7 @@ RNN `x[1]`的第一遍是字母`w`。 我们将根据等式`(1)`随机初始化
![](img/6ccce969-b83d-44cd-87d9-647322b6f44a.png)矩阵为`3 x 4`
* `x = 3`,因为我们在递归层中有三个循环神经元
* `x = 3`,因为我们在循环层中有三个循环神经元
* `h = 4`,因为我们的词汇量是 4
矩阵`W[hh]``1×1`矩阵。 让我们将其值为 0.35028053。 我们还在这里介绍偏置项`b`,它也是`1 x 1`矩阵 0.6161462。 在下一步中,我们将把这些值放在一起并确定`h[t]`的值。 (稍后我们将处理第二个方程。)
......
......@@ -141,7 +141,7 @@ TensorFlow 对象检测 API 具有预先训练的模型,[您可以使用网络
可以在[这个页面](https://github.com/PacktPublishing/Mastering-Computer-Vision-with-TensorFlow-2.0/blob/master/Chapter10/Chapter10_Tensorflow_Object_detection_API.ipynb)中找到用于此练习的修改后的代码。
在这里,我们通过导入`tensorflow_hub``six.moves`安装 TensorFlow 库。 `six.moves`是一个 Python 模块,用于提供 Python 2 和 Python 3 之间的通用包。它显示图像并在图像上绘制边框。 在通过检测器之前,图像将转换为数组。 检测器是直接从集线器加载的模块,该模块在后台执行所有神经网络处理。 以下显示了在两种不同型号`tfhub`上运行示例图像时的输出:
在这里,我们通过导入`tensorflow_hub``six.moves`安装 TensorFlow 库。 `six.moves`是一个 Python 模块,用于提供 Python 2 和 Python 3 之间的通用包。它显示图像并在图像上绘制边框。 在通过检测器之前,图像将转换为数组。 检测器是直接从集线器加载的模块,该模块在后台执行所有神经网络处理。 以下显示了在两种不同模型`tfhub`上运行示例图像时的输出:
![](img/1dfd202a-1189-4b8d-99d8-8ce5d20d32e9.png)
......@@ -371,7 +371,7 @@ drive.mount('/content/drive')
# 准备模型并配置训练管道
接下来,使用以下命令下载并解压缩基本模型。 在“配置参数和安装所需包”部分的配置参数步骤中,已选择型号和相应的配置参数。 可以根据配置参数和批量大小选择四种不同的型号(SSD,Faster R-CNN 和 R-FCN 的两种变体)。 您可以从指示的批量大小开始,并在模型优化期间根据需要进行调整:
接下来,使用以下命令下载并解压缩基本模型。 在“配置参数和安装所需包”部分的配置参数步骤中,已选择模型和相应的配置参数。 可以根据配置参数和批量大小选择四种不同的模型(SSD,Faster R-CNN 和 R-FCN 的两种变体)。 您可以从指示的批量大小开始,并在模型优化期间根据需要进行调整:
```py
MODEL_FILE = MODEL + '.tar.gz'
......
......@@ -319,7 +319,7 @@ python3 openvino_fd_myriad.py
![](img/1f5f007f-c2c0-46bc-8934-ac59097065c8.png)
然后,单击最新文件夹,在这种情况下为`models_bin`。 这将打开一个对话框,显示`FP16``FP32``INT8`。 对于某些型号,不提供`INT8`
然后,单击最新文件夹,在这种情况下为`models_bin`。 这将打开一个对话框,显示`FP16``FP32``INT8`。 对于某些模型,不提供`INT8`
现在,让我们尝试了解这些参数的含义,以便我们可以根据自己的具体应用选择合适的参数。 `FP16`将 16 位而不是 32 位用于`FP32`,从而减少了训练和推理时间。 另一方面,`INT8`使用 8 位整数对神经网络进行权重,渐变和激活的训练。 因此,在这三种方法中,`INT8`应该是最快的一种,英特尔声称它仍然保持准确率。
......
......@@ -392,7 +392,7 @@ plt.xlabel('epoch')
plt.show()
```
让我们看一下前面代码的输出。 以下屏幕截图显示了不同型号之间的精度比较。 它显示了 Inception 的训练参数:
让我们看一下前面代码的输出。 以下屏幕截图显示了不同模型之间的精度比较。 它显示了 Inception 的训练参数:
![](img/394d81c7-a636-4a18-9502-6d6b37eee833.png)
......@@ -406,7 +406,7 @@ plt.show()
前面的屏幕截图显示 ResNet 的准确率在四个时期内达到了约 80%。
对于所有三个型号,在四个时期内,精度始终达到至少 80%。 Inception 模型的结果具有最高的准确率。
对于所有三个模型,在四个时期内,精度始终达到至少 80%。 Inception 模型的结果具有最高的准确率。
# 了解视觉搜索的架构和应用
......
......@@ -276,7 +276,7 @@ self.model.fit_generator(generatepochs=epochs, callbacks=xcallbacks)
前面的代码是如何设置神经网络进行训练的典型示例。 我们在“第 6 章”,“使用迁移学习的视觉搜索”中对此进行了详细介绍。 主要功能如下:
* `create_hourglass_network`是主要型号
* `create_hourglass_network`是主要模型
* `train_dataset`使用 MPIIDatagen,这是用于输入数据的外部模块。
* `train_gen`输入`train_dataset`并放大图像。
* 它包含回调和检查点,因此我们可以在训练过程中了解模型的内部状态。
......
......@@ -596,7 +596,7 @@ GCP 上托管的模型将放置在 EC2 VM 实例中,并将包装在基于 Flas
* `src/chess_zero/env/`
* `chess_env.py`:此文件描述棋盘的设置,游戏规则以及执行游戏操作所需的功能。 它还包含检查游戏状态和验证移动的方法。
* `src/chess_zero/worker/`
* `evaluate.py`:此文件负责与当前最佳型号和下一代型号玩游戏。 如果下一代模型的表现优于 100 款游戏,则它将替代以前的模型。
* `evaluate.py`:此文件负责与当前最佳模型和下一代模型玩游戏。 如果下一代模型的表现优于 100 款游戏,则它将替代以前的模型。
* `optimize.py`:此文件加载当前最佳模型,并在其上执行更多监督的基于学习的训练。
* `self.py`:引擎与自己对战并学习新的游戏玩法。
* `sl.py`:监督学习的缩写,此文件将来自其他玩家的游戏的 PGN 文件作为输入,并对其进行监督学习。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册