From 2fd5ab1f8254ef1e10095f0050d07536d52056b8 Mon Sep 17 00:00:00 2001 From: wizardforcel <562826179@qq.com> Date: Tue, 5 Jan 2021 22:48:11 +0800 Subject: [PATCH] 2021-01-05 22:48:11 --- new/handson-ai-gcp/09.md | 22 +++++++++++----------- new/handson-ai-gcp/10.md | 14 ++++++++------ new/handson-dl-arch-py/4.md | 2 +- new/master-cv-tf-2x/1.md | 4 ++-- new/master-cv-tf-2x/12.md | 2 +- new/mobi-dl-tflite/01.md | 2 +- new/mobi-dl-tflite/07.md | 2 +- 7 files changed, 25 insertions(+), 23 deletions(-) diff --git a/new/handson-ai-gcp/09.md b/new/handson-ai-gcp/09.md index 5a1dfd71..30a4fb44 100644 --- a/new/handson-ai-gcp/09.md +++ b/new/handson-ai-gcp/09.md @@ -119,7 +119,7 @@ Google Cloud AI 平台可让您将机器学习解决方案组织为模型和版 * `inputs`:用于训练 TensorFlow 模型的相应数据输入存储了字符串映射列表。 * `outputs`:用于训练 TensorFlow 模型的相应数据输出存储了字符串映射列表。 * `method_name`:在 TensorFlow 框架中使用的受支持的命名方法。 -* SavedModel 也支持资产。 如果操作依赖于外部初始化文件(例如词汇表),则 SavedModel 将使用资产。 资产被复制到 SavedModel 目录,并在加载特定的元图 def 时读取。 +* SavedModel 也支持资产。 如果操作依赖于外部初始化文件(例如词汇表),则 SavedModel 将使用资产。 资产被复制到 SavedModel 目录,并在加载特定的元图定义时读取。 * 在生成 SavedModel 之前,它支持清除设备。 如上一节所述,尽管 SavedModels 支持某些重要功能,但不支持其他功能。 这些如下: @@ -151,13 +151,13 @@ SignatureDef 确定 TensorFlow 图辅助计算的签名。 SignatureDefs 旨在 图 9.9:分类消息 API 有效负载 -Predict SignatureDefs 支持对 TensorFlow Serving 的 Predict API 的调用。 这样的签名使您可以任意支持多个输入和输出张量。 对于以下示例,我的预测签名具有特定的逻辑张量图像,该图像在您的图形`x:0`中映射到实际张量。 Predict SignatureDefs 允许模型到模型的可移植性。 这意味着您可以在不同的 SavedModels 中处理不同的基础 Tensor 名称(例如,您可能具有 Tensor *Z:0* 而不是`x:0`的替代模型),因此您的 客户将继续在网络上测试新旧模型,而不会改变客户方面。 Predict SignatureDefs 允许您向输出中添加其他张量,您可以显式请求这些张量。 假设除了`scores`下面的输出键之外,您还希望获取堆层用于调试或其他目的。 在这种情况下,只需添加带有池密钥和适当值的附加张量即可。 以下屏幕截图显示了 Predict SignatureDefs 的结构: +预测 SignatureDefs 支持对 TensorFlow Serving 的 Predict API 的调用。 这样的签名使您可以任意支持多个输入和输出张量。 对于以下示例,我的预测签名具有特定的逻辑张量图像,该图像在您的图形`x:0`中映射到实际张量。 预测 SignatureDefs 允许模型到模型的可移植性。 这意味着您可以在不同的 SavedModels 中处理不同的基础 Tensor 名称(例如,您可能具有张量`Z:0`而不是`x:0`的替代模型),因此您的 客户将继续在网络上测试新旧模型,而不会改变客户方面。 预测 SignatureDefs 允许您向输出中添加其他张量,您可以显式请求这些张量。 假设除了`scores`下面的输出键之外,您还希望获取堆层用于调试或其他目的。 在这种情况下,只需添加带有池密钥和适当值的附加张量即可。 以下屏幕截图显示了预测 SignatureDefs 的结构: ![](img/b1f2ac0e-43e1-4aee-912b-b959f87b56d6.png) 图 9.10:分类 API 响应 -回归 SignatureDefs 支持对 TensorFlow 服务回归 API 的结构化调用,该 API 恰好需要一个张量输入和一个张量输出。 以下屏幕截图显示了 Regression SignatureDefs 的结构: +回归 SignatureDefs 支持对 TensorFlow 服务回归 API 的结构化调用,该 API 恰好需要一个张量输入和一个张量输出。 以下屏幕截图显示了回归 SignatureDefs 的结构: ![](img/a30276d6-aa5a-447f-9ff2-4bcd056be936.png) @@ -171,9 +171,9 @@ Predict SignatureDefs 支持对 TensorFlow Serving 的 Predict API 的调用。 图 9.12:Tensorflow SavedModel API -`SavedModelBuilder`类提供了多个要保存的元图定义,相关变量和属性。 必须使用变量保存第一个元图,以便构建 SavedModel。 以下元图及其图说明易于保存。 当必须保存属性并将其写入或复制到磁盘时,可以在插入元语法 def 时提供属性。 如果将多个元图定义连接到同名资产,则仅保留第一个版本。 每个 SavedModel 元图必须用反映元图功能和特定于案例的用户标签的标签注释。 +`SavedModelBuilder`类提供了多个要保存的元图定义,相关变量和属性。 必须使用变量保存第一个元图,以便构建 SavedModel。 以下元图及其图说明易于保存。 当必须保存属性并将其写入或复制到磁盘时,可以在插入元语法定义时提供属性。 如果将多个元图定义连接到同名资产,则仅保留第一个版本。 每个 SavedModel 元图必须用反映元图功能和特定于案例的用户标签的标签注释。 -这样的标签通常包括带有其属性(例如,服务或训练)以及可能的硬件特定方面(例如 GPU)的元图。 SavedModel 中的 def 元图的标记集与 Loader API 中的标记集完全匹配,是加载程序加载的图元。 如果没有 def 元图与列出的标签匹配,将返回错误。 例如,需要 GPU 服务的加载程序可以通过在`tensorflow::LoadSavedModel(...)`中指定标签来仅加载带有`tags=serve`(GPU)注释的元图。 以下屏幕快照中的代码表示如何使用 Builder API: +这样的标签通常包括带有其属性(例如,服务或训练)以及可能的硬件特定方面(例如 GPU)的元图。 SavedModel 中的定义元图的标记集与 Loader API 中的标记集完全匹配,是加载程序加载的图元。 如果没有定义元图与列出的标签匹配,将返回错误。 例如,需要 GPU 服务的加载程序可以通过在`tensorflow::LoadSavedModel(...)`中指定标签来仅加载带有`tags=serve`(GPU)注释的元图。 以下屏幕快照中的代码表示如何使用 Builder API: ![](img/80e8f419-229d-4752-a5b6-861f5cf779b8.png) @@ -181,19 +181,19 @@ Predict SignatureDefs 支持对 TensorFlow Serving 的 Predict API 的调用。 使用 SavedModelBuilder 包,用户可以测试在添加 SavedModel 包元图时是否必须从 NodeDefs 中删除默认评估的属性。 `SavedModelBuilder.add`元语法和变量以及`SavedModelbuilder.add`元图都接受控制此行为的带状默认属性`boolean`标志。 通过将条带默认属性设置为`True`,模型创建者可以删除 NodeDefs 中任何有价值的默认属性。 这有助于确保具有默认值的新属性不会导致较旧的模型使用者无法加载已使用新训练二进制文件重新生成的模型。 -加载程序 API 用 C ++和 Python 实现。 Python 的 SavedModel 加载程序版本包含 SavedModel 加载和还原功能。 加载功能包括用于恢复图形描述和变量的会话,用于定义默认加载元图的标签以及 SavedModel 的位置。 特定元图 def 中提供的变量和资产的子集将还原到加载时提供的会话。 加载程序 API 的代表性 Python 代码如下所示: +加载程序 API 用 C++ 和 Python 实现。 Python 的 SavedModel 加载程序版本包含 SavedModel 加载和还原功能。 加载功能包括用于恢复图形描述和变量的会话,用于定义默认加载元图的标签以及 SavedModel 的位置。 特定元图定义中提供的变量和资产的子集将还原到加载时提供的会话。 加载程序 API 的代表性 Python 代码如下所示: ![](img/bcef2cfa-6609-44fe-906b-e79ee83bf28c.png) 图 9.14:API 加载程序代码 -C ++的 SavedModel 加载器版本提供了一个 API,用于从路径加载 SavedModel,允许使用`SessionOptions`和`RunOptions`。 与 Python 版本相比,C ++版本需要加载和定义与图形关联的标签。 加载的此版本 SavedModel 称为 SavedModelBundle,其中包括 def 元图和加载会话。 Loader API 的代表性 C ++代码如下所示: +C++ 的 SavedModel 加载器版本提供了一个 API,用于从路径加载 SavedModel,允许使用`SessionOptions`和`RunOptions`。 与 Python 版本相比,C++ 版本需要加载和定义与图形关联的标签。 加载的此版本 SavedModel 称为 SavedModelBundle,其中包括定义元图和加载会话。 Loader API 的代表性 C++ 代码如下所示: ![](img/b15edc53-8325-4b7c-a5b1-475273e1bab8.png) -图 9.15:Loader API 代码的 C ++实现 +图 9.15:Loader API 代码的 C++ 实现 -SavedModel 为构建和加载用于各种应用程序的 TensorFlow 图提供了灵活性。 SavedModel API 提供了许多 Python 和 C ++常量,这些常量易于使用,并且在针对最常见的预期应用程序的工具之间始终保持共享。 +SavedModel 为构建和加载用于各种应用程序的 TensorFlow 图提供了灵活性。 SavedModel API 提供了许多 Python 和 C++ 常量,这些常量易于使用,并且在针对最常见的预期应用程序的工具之间始终保持共享。 # 在 GCP 上部署模型 @@ -226,7 +226,7 @@ gsutil mb -l $REGION gs://$BUCKET_NAME 图 9.17:存储桶列表 -GCP 控制台提供了一个轻松的界面来创建新的存储桶。 这是我们单击 CREATE BUCKET 按钮时打开的初始页面的屏幕截图: +GCP 控制台提供了一个轻松的界面来创建新的存储桶。 这是我们单击`CREATE BUCKET`按钮时打开的初始页面的屏幕截图: ![](img/0c561492-db97-4393-ac82-31d31c6cee8c.png) @@ -336,7 +336,7 @@ curl -X POST -H "Content-Type: application/json" \ 图 9.23:自动缩放比例配置 -实现此目的的另一种方法是使用`gcloud` CLI。 如果使用`gcloud`,则首先设置环境变量以保存云存储目录路径,模型名称,版本名称和框架选择。 创建`gcloud`工具版本时,可以在框架名称中使用大写字母(例如,_SCIKIT-LEARN)添加下划线,也可以使用小写字母(例如,_scikit-learn)添加连字符。 所有方法导致相同的行为。 以下代码块显示了如何在脚本中设置相关的环境变量: +实现此目的的另一种方法是使用`gcloud` CLI。 如果使用`gcloud`,则首先设置环境变量以保存云存储目录路径,模型名称,版本名称和框架选择。 创建`gcloud`工具版本时,可以在框架名称中使用大写字母(例如,`_SCIKIT-LEARN`)添加下划线,也可以使用小写字母(例如,`_scikit-learn`)添加连字符。 所有方法导致相同的行为。 以下代码块显示了如何在脚本中设置相关的环境变量: ```py MODEL_DIR="gs://your_bucket_name/" diff --git a/new/handson-ai-gcp/10.md b/new/handson-ai-gcp/10.md index eff73212..cbaf1757 100644 --- a/new/handson-ai-gcp/10.md +++ b/new/handson-ai-gcp/10.md @@ -127,10 +127,12 @@ AI 和 ML 模型的部署是全面运行模型的重要步骤。 GCP 使部署 3. 使用以下针对 TensorFlow SavedModel 的命令将模型上传到新创建的存储桶: -* SAVED_MODEL_DIR = $(ls ./your-export-dir-base | tail -1) -* gsutil cp -r $ SAVED_MODEL_DIR gs:// AIGCP-其他 +```py +SAVED_MODEL_DIR=$(ls ./your-export-dir-base | tail -1) +gsutil cp -r $SAVED_MODEL_DIR gs://your-bucket +``` -3. 在将模型用于 AI 平台预测之前,请测试`model—Gcloud ai-platform local predict`命令以检查模型如何处理预测。 该命令使用本地环境中的依赖项进行预测并在联机进行预测时以与`gcloud ai-platform predict`相同的方式产生输出。 为了节省成本,建议您在发送联机预测请求之前在本地检查预测以发现错误。 这是测试模型的示例命令: +4. 在将模型用于 AI 平台预测之前,请测试`model—Gcloud ai-platform local predict`命令以检查模型如何处理预测。 该命令使用本地环境中的依赖项进行预测并在联机进行预测时以与`gcloud ai-platform predict`相同的方式产生输出。 为了节省成本,建议您在发送联机预测请求之前在本地检查预测以发现错误。 这是测试模型的示例命令: ```py gcloud ai-platform local predict --model-dir model_storage_path/ \ @@ -159,7 +161,7 @@ gcloud ai-platform local predict --model-dir model_storage_path/ \ 通常,发票包含以下部分: 1. 客户名称,地址和电话号码。 -2. 发票抬头信息,例如发票编号,日期,SOW#,项目 ID 等。 +2. 发票抬头信息,例如发票编号,日期,SOW 编号,项目 ID 等。 3. 发票金额明细和总计。 4. 发票金额(以字为单位)。 5. 用于汇款的银行帐户详细信息。 @@ -226,7 +228,7 @@ gcloud components update ![](img/952ec8cc-8d84-4c7d-a0f5-f59430ae43fc.png) -图 10.5:用于创建存储桶的 gsutil 命令 +图 10.5:用于创建存储桶的`gsutil`命令 5. 创建`aigcp`存储桶以存储发票 PDF 文件,并使用`aigcp-text`存储桶存储转录的文本文件(JSON 格式)。 6. 将发票 PDF 文件复制到`aigcp`存储桶(从 Cloud Shell 或从 GCP 控制台复制)。 这是 GCP 控制台中存储区内容的快速快照: @@ -241,7 +243,7 @@ gcloud components update 图 10.7:使用 Vision API 进行 OCR 和文本检测的命令 -8. OCR 也可以通过任何一个编程接口执行。 GCP 提供了用于 C#,Go,Java,Node.js,PHP,Python 和 Ruby 的 API。 让我们看一下 OCR 的 Python 实现的一小段。 [完整的实现在 GitHub 上](https://github.com/PacktPublishing/Hands-On-Artificial-Intelligence-on-Google-Cloud-Platform): +8. OCR 也可以通过任何一个编程接口执行。 GCP 提供了用于 C#,Go,Java,Node.js,PHP,Python 和 Ruby 的 API。 让我们看一下 OCR 的 Python 实现的一小段。 [完整的实现在 GitHub 上](https://github.com/PacktPublishing/Hands-On-Artificial-Intelligence-on-Google-Cloud-Platform): ```py def async_detect_document(source_path_gcs, destination_path_gcs): diff --git a/new/handson-dl-arch-py/4.md b/new/handson-dl-arch-py/4.md index ef3fda41..1448adad 100644 --- a/new/handson-dl-arch-py/4.md +++ b/new/handson-dl-arch-py/4.md @@ -699,7 +699,7 @@ def read_image(imPath): FROZEN_GRAPH_FILE = 'frozen_inference_graph.pb' #path to frozen graph ``` -我们在 Python 中使用 TensorFlow,但是 TensorFlow 的实际库是用 C ++编写的。 TensorFlow 使用名为`protobuf`的模块将图形转换为不同的语言。 因此,在读取由`protobuf`(通常带有`.pb`扩展名)存储的图形时,我们需要首先使用`tf.GraphDef`定义一个序列图,然后将其放入要创建的空图内。 以下代码执行相同的操作: +我们在 Python 中使用 TensorFlow,但是 TensorFlow 的实际库是用 C++ 编写的。 TensorFlow 使用名为`protobuf`的模块将图形转换为不同的语言。 因此,在读取由`protobuf`(通常带有`.pb`扩展名)存储的图形时,我们需要首先使用`tf.GraphDef`定义一个序列图,然后将其放入要创建的空图内。 以下代码执行相同的操作: ```py # making an empty graph diff --git a/new/master-cv-tf-2x/1.md b/new/master-cv-tf-2x/1.md index 1c2857b5..e6208baa 100644 --- a/new/master-cv-tf-2x/1.md +++ b/new/master-cv-tf-2x/1.md @@ -59,7 +59,7 @@ print hamming_distance(hash1,hash2) # 创建图像矢量 -彩色图像是 R,G 和 B 的组合。颜色可以表示为强度值,范围从`0`到`255`。 因此,每个图像都可以表示为三维立方体,其中`x`和`y`轴表示宽度和高度,而`z`轴表示三种颜色 通道(R,G,B)代表每种颜色的强度。 OpenCV 是一个具有为 Python 和 C ++编写的用于图像处理和对象检测的内置编程功能的库。 +彩色图像是 R,G 和 B 的组合。颜色可以表示为强度值,范围从`0`到`255`。 因此,每个图像都可以表示为三维立方体,其中`x`和`y`轴表示宽度和高度,而`z`轴表示三种颜色 通道(R,G,B)代表每种颜色的强度。 OpenCV 是一个具有为 Python 和 C++ 编写的用于图像处理和对象检测的内置编程功能的库。 我们将从编写以下 Python 代码开始以导入图像,然后我们将看到如何将图像分解为具有 RGB 的 NumPy 向量数组。 然后,我们将图像转换为灰度,并查看当我们仅从图像中提取一种颜色分量时图像的外观: @@ -608,7 +608,7 @@ pip install tensorflow * PyGPU(Python 功能,用于图像处理,GPU 计算以提高性能) * `cctools`(适用于 Android 的本地 IDE) * `c-ares`(库功能) -* `clang`(C,C ++,Objective-C,OpenCL 和 OpenCV 的编译器前端) +* `clang`(C,C++ ,Objective-C,OpenCL 和 OpenCV 的编译器前端) * `llvm`(用于生成前端和后端二进制代码的编译器架构) * `theano`(用于管理多维数组的 Python 库) * `grpcio`(用于 Python 的`gRPC`软件包,用于实现远程过程调用) diff --git a/new/master-cv-tf-2x/12.md b/new/master-cv-tf-2x/12.md index 1c5a617b..e7c4c525 100644 --- a/new/master-cv-tf-2x/12.md +++ b/new/master-cv-tf-2x/12.md @@ -671,7 +671,7 @@ def index(): 在本节中,我们将讨论使用三种不同的云平台(GCP,AWS 和 Azure)的可视搜索任务。 我们已经在“第 6 章”,“使用迁移学习进行视觉搜索”中,其中我们学习了如何将图像向量与 PC 目录中的大量图像进行比较以查找 基于欧几里得距离的最接近的匹配。 在本部分中,您将学习如何使用 REST API 从 PC 上载图像到云,云搜索引擎将搜索最接近的图像并将其显示。 因此,所有繁重的工作将由云引擎来完成。 -请注意,在本节中,介绍了视觉搜索的基本概念。 内容可以更深入,您可以从 GCP,AWS 或 Azure 获取云 API,并将其插入用 Python,C ++或 JavaScript 编写的应用程序中,以调用云引擎并执行搜索。 +请注意,在本节中,介绍了视觉搜索的基本概念。 内容可以更深入,您可以从 GCP,AWS 或 Azure 获取云 API,并将其插入用 Python,C++ 或 JavaScript 编写的应用程序中,以调用云引擎并执行搜索。 # 使用 GCP 进行视觉搜索 diff --git a/new/mobi-dl-tflite/01.md b/new/mobi-dl-tflite/01.md index 7cd9498e..7e8306bf 100644 --- a/new/mobi-dl-tflite/01.md +++ b/new/mobi-dl-tflite/01.md @@ -293,7 +293,7 @@ Core ML 是 Apple 在 iOS 11 中发布的一种机器学习框架,用于使在 # Caffe2 -Caffe2 建立在由加州大学伯克利分校开发的**用于快速嵌入的原始卷积架构**(**Caffe**)上,是一种轻量级,模块化,可扩展的深度学习框架,由 脸书 它可以帮助开发人员和研究人员部署机器学习模型,并在 Android,iOS 和 Raspberry Pi 上提供 AI 驱动的性能。 此外,它支持在 Android Studio,Microsoft Visual Studio 和 Xcode 中进行集成。 Caffe2 带有可互换使用的本机 Python 和 C ++ API,从而简化了原型设计和优化过程。 它足够有效地处理大量数据,并且有助于自动化,图像处理以及统计和数学运算。 Caffe2 是开源的,托管在 GitHub 上,它利用社区的贡献来开发新模型和算法。** +Caffe2 建立在由加州大学伯克利分校开发的**用于快速嵌入的原始卷积架构**(**Caffe**)上,是一种轻量级,模块化,可扩展的深度学习框架,由 脸书 它可以帮助开发人员和研究人员部署机器学习模型,并在 Android,iOS 和 Raspberry Pi 上提供 AI 驱动的性能。 此外,它支持在 Android Studio,Microsoft Visual Studio 和 Xcode 中进行集成。 Caffe2 带有可互换使用的本机 Python 和 C++ API,从而简化了原型设计和优化过程。 它足够有效地处理大量数据,并且有助于自动化,图像处理以及统计和数学运算。 Caffe2 是开源的,托管在 GitHub 上,它利用社区的贡献来开发新模型和算法。** # TensorFlow diff --git a/new/mobi-dl-tflite/07.md b/new/mobi-dl-tflite/07.md index 59e6a307..4bdbfa47 100644 --- a/new/mobi-dl-tflite/07.md +++ b/new/mobi-dl-tflite/07.md @@ -44,7 +44,7 @@ * 数字制图 * 自动驾驶汽车 -我们在较早的项目中讨论了图像处理的基础知识。 在这个项目中,我们将讨论一个非常流行的用于执行图像处理的库-OpenCV。 OpenCV 是*开源计算机视觉*的缩写。 它由 Intel 开发,并由 Willow Garage 和 Itseez(后来被 Intel 收购)推动。 毫无疑问,由于它与所有主要的机器学习框架(例如 TensorFlow,PyTorch 和 Caffe)兼容,因此它是执行图像处理的全球大多数开发人员的首要选择。 除此之外,OpenCV 还可以使用多种语言,例如 C ++,Java 和 Python。 +我们在较早的项目中讨论了图像处理的基础知识。 在这个项目中,我们将讨论一个非常流行的用于执行图像处理的库-OpenCV。 OpenCV 是*开源计算机视觉*的缩写。 它由 Intel 开发,并由 Willow Garage 和 Itseez(后来被 Intel 收购)推动。 毫无疑问,由于它与所有主要的机器学习框架(例如 TensorFlow,PyTorch 和 Caffe)兼容,因此它是执行图像处理的全球大多数开发人员的首要选择。 除此之外,OpenCV 还可以使用多种语言,例如 C++ ,Java 和 Python。 要在 Python 环境中安装 OpenCV,可以使用以下命令: -- GitLab