提交 be732f21 编写于 作者: W wizardforcel

2020-12-06 16:08:00

上级 943002c8
......@@ -30,7 +30,7 @@
[TensorFlow 教程](https://www.tensorflow.org/tutorials/recurrent_quickdraw)中内置的工程图分类模型首先将表示为点列表的用户工程图输入转换为张量 连续点的增量以及有关每个点是否是新笔画的开始的信息。 然后将张量穿过几个卷积层和 LSTM 层,最后穿过 softmax 层,如图 7.1 所示,以对用户图形进行分类:
[TensorFlow 教程](https://www.tensorflow.org/tutorials/recurrent_quickdraw)中内置的图纸分类模型首先将表示为点列表的用户图纸输入转换为张量 连续点的增量以及有关每个点是否是新笔画的开始的信息。 然后将张量穿过几个卷积层和 LSTM 层,最后穿过 softmax 层,如图 7.1 所示,以对用户图形进行分类:
![](img/ef475044-6568-4e50-bc98-8ff0a0d6efbf.png)Figure 7.1: The drawing classification mode
......
......@@ -69,7 +69,7 @@ Connect 4 的 AlphaZero 模型基于[存储库](https://github.com/jeffxtang/Dee
git clone https://github.com/jeffxtang/DeepReinforcementLearning
```
然后,如果尚未在第 8 章,*中使用 RNN* 预测股价,则设置 Keras 和 TensorFlow 虚拟环境:
然后,如果尚未在第 8 章,“使用 RNN 预测股价”中设置,则设置 Keras 和 TensorFlow 虚拟环境:
```py
cd
......@@ -109,7 +109,7 @@ model.png 文件包含深度神经网络体系结构的详细视图。 卷积层
![](img/99dc16a9-52c9-4adf-bd8f-1a244504de79.png)Figure 10.1 The first layers of the deep residual network
值得注意的是,神经网络称为残差网络(ResNet),由 Microsoft 于 2015 年在 ImageNet 和 COCO 2015 竞赛的获奖作品中引入。 在 ResNet 中,使用身份映射(图 10.1 右侧的箭头)可避免在网络越深时出现更高的训练错误。 有关 ResNet 的更多信息,您可以查看原始论文[《用于图像识别的深度残差学习》](https://arxiv.org/pdf/1512.03385v1.pdf), 以及博客[《了解深度残网络》](https://blog.waya.ai/deep-residual-learning-9610bb62c355) - 一个简单的模块化学习框架,它重新定义了构成最新技术的内容。
值得注意的是,神经网络称为残差网络(ResNet),由 Microsoft 于 2015 年在 ImageNet 和 COCO 2015 竞赛的获奖作品中引入。 在 ResNet 中,使用身份映射(图 10.1 右侧的箭头)可避免在网络越深时出现更高的训练错误。 有关 ResNet 的更多信息,您可以查看原始论文[《用于图像识别的深度残差学习》](https://arxiv.org/pdf/1512.03385v1.pdf), 以及博客[《了解深度残网络》](https://blog.waya.ai/deep-residual-learning-9610bb62c355) - 一个简单的模块化学习框架,它重新定义了构成最新技术的内容。
深度网络的最后一层如图 10.2 所示,您可以看到,在最后的残差块和具有批处理归一化和 ReLU 层的卷积层之后,将应用密集的全连接层以输出`value_head and policy_head`值:
......@@ -324,7 +324,7 @@ if player2version > 0:
# saver.save(K.get_session(), '/tmp/alphazero_4.ckpt')
```
您可能会觉得很熟悉,因为我们在第 8 章,*中使用 RNN* 预测股票价格做了类似的操作。 确保将`alphazero19.ckpt``alphazero_4.ckpt`中的版本号(例如 19 或 4)与`play.py`中定义的内容(例如`playMatchesBetweenVersions(env, 1, 19, 4, 10, lg.logger_tourney, 0)`)以及 `run_archive/connect4/run0001/models`目录中的版本号匹配 在这种情况下, `version0019.h5``version0004.h5`都需要存在。
您可能会觉得很熟悉,因为我们在第 8 章,“使用 RNN 预测股票价格”做了类似的操作。 确保将`alphazero19.ckpt``alphazero_4.ckpt`中的版本号(例如 19 或 4)与`play.py`中定义的内容(例如`playMatchesBetweenVersions(env, 1, 19, 4, 10, lg.logger_tourney, 0)`)以及 `run_archive/connect4/run0001/models`目录中的版本号匹配 在这种情况下, `version0019.h5``version0004.h5`都需要存在。
运行`play.py`后,将在`/tmp`目录中生成`alphazero19`检查点文件:
......@@ -346,7 +346,7 @@ python tensorflow/python/tools/freeze_graph.py \
--input_binary=true
```
为简单起见,由于它是小型模型,因此我们不会像第 6 章,“用自然语言描述图像”和[ 第 9 章,*用 GAN* 生成和增强图像。 现在,我们准备在移动设备上使用该模型并编写代码以在 iOS 和 Android 设备上播放 Connect 4。
为简单起见,由于它是小型模型,因此我们不会我们不会进行图变换和内存映射变换,就像第 6 章,“用自然语言描述图像”和第 9 章,“用 GAN 生成和增强图像”。 现在,我们准备在移动设备上使用该模型并编写代码以在 iOS 和 Android 设备上播放 Connect 4。
......@@ -837,7 +837,7 @@ int winners[69][4] = {
毫不奇怪,我们不需要像第 7 章,*识别具有 CNN 和 LSTM* 的工程图那样使用自定义 Android 库来加载模型。 只需创建一个名称为 AlphaZero 的新 Android Studio 应用,将`alphazero19.pb` 模型文件 复制到新创建的素材资源文件夹,然后将 `compile 'org.tensorflow:tensorflow-android:+'` 行添加到 应用程序的`build.gradle`文件。
毫不奇怪,我们不需要像第 7 章,“使用 CNN 和 LSTM 识别图纸”那样使用自定义 Android 库来加载模型。 只需创建一个名称为 AlphaZero 的新 Android Studio 应用,将`alphazero19.pb` 模型文件 复制到新创建的素材资源文件夹,然后将 `compile 'org.tensorflow:tensorflow-android:+'` 行添加到 应用程序的`build.gradle`文件。
我们首先创建一个新类`BoardView`,该类扩展了`View`并负责绘制游戏板以及 AI 和用户制作的棋子:
......
......@@ -4,7 +4,7 @@
在前九章中,我们使用 TensorFlow Mobile 在移动设备上运行各种由 TensorFlow 和 Keras 构建的强大的深度学习模型。 正如我们在第 1 章,*移动 TensorFlow* 入门中提到的那样,Google 还提供了 TensorFlow Lite(可替代 TensorFlow Mobile 的版本)在移动设备上运行模型。 尽管自 Google I / O 2018 起它仍在开发人员预览中,但 Google 打算“ 大大简化开发人员针对小型设备的模型定位的体验。” 因此,值得详细研究 TensorFlow Lite 并为未来做好准备。
在前九章中,我们使用 TensorFlow Mobile 在移动设备上运行各种由 TensorFlow 和 Keras 构建的强大的深度学习模型。 正如我们在第 1 章,“移动 TensorFlow 入门”中提到的那样,Google 还提供了 TensorFlow Lite(可替代 TensorFlow Mobile 的版本)在移动设备上运行模型。 尽管自 Google I / O 2018 起它仍在开发人员预览中,但 Google 打算“ 大大简化开发人员针对小型设备的模型定位的体验。” 因此,值得详细研究 TensorFlow Lite 并为未来做好准备。
如果您是 iOS 开发人员,或者同时使用 iOS 和 Android,则 Apple 一年一度的**全球开发人员大会****WWDC**)是您不容错过的活动。 在 WWDC 2017 中,Apple 宣布了新的 Core ML 框架,以支持 iOS(以及所有其他 Apple OS 平台:macOS,tvOS 和 watchOS)上的深度学习模型和标准机器学习模型的运行。 自 iOS 11 起,Core ML 就可用了,截至 2018 年 5 月,Core ML 已占到 80%的标记份额。至少了解您可以在 iOS 应用中使用 Core ML 的基本知识绝对有意义。
......@@ -78,7 +78,7 @@ open simple.xcworkspace
您可以查看 Xcode `tflite_camera_example`项目的`CameraExampleViewController.mm`文件和`tflite_simple_example` `RunModelViewController.mm`文件中的源代码,以了解如何使用 TensorFlow Lite API 加载和运行 TensorFlow Lite 模型。 在逐步指导您如何创建新的 iOS 应用并向其添加 TensorFlow Lite 支持以运行预先构建的 TensorFlow Lite 模型的逐步教程之前,我们将快速以具体数字向您展示的好处之一 如前所述,使用 TensorFlow Lite-应用程序二进制大小:
位于`tensorflow/examples/ios/camera`文件夹中的`tf_camera_example` TensorFlow Mobile 示例应用程序中使用的`tensorflow_inception.graph.pb`模型文件为 95.7 MB,而`mobilenet_quant_v1_224.tflite` TensorFlow Lite 模型文件 位于`tensorflow/contrib/lite/examples/ios/camera` 文件夹中的 `tflite_camera_example` TensorFlow Lite 示例应用程序中使用的仅 4.3 MB。 TensorFlow Mobile 重新训练的 Inception 3 模型文件的量化版本,如我们在第 2 章,*通过 Transfer Learning* 对图像进行分类的 HelloTensorFlow 应用中所见,约为 22.4 MB,并且 重新训练的 MobileNet TensorFlow Mobile 模型文件为 17.6 MB。 总之,以下列出了四种不同类型的模型的大小:
位于`tensorflow/examples/ios/camera`文件夹中的`tf_camera_example` TensorFlow Mobile 示例应用程序中使用的`tensorflow_inception.graph.pb`模型文件为 95.7 MB,而`mobilenet_quant_v1_224.tflite` TensorFlow Lite 模型文件 位于`tensorflow/contrib/lite/examples/ios/camera` 文件夹中的 `tflite_camera_example` TensorFlow Lite 示例应用程序中使用的仅 4.3 MB。 TensorFlow Mobile 重新训练的 Inception 3 模型文件的量化版本,如我们在第 2 章,“通过迁移学习对图像进行分类”的 HelloTensorFlow 应用中所见,约为 22.4 MB,并且 重新训练的 MobileNet TensorFlow Mobile 模型文件为 17.6 MB。 总之,以下列出了四种不同类型的模型的大小:
* TensorFlow Mobile Inception 3 模型:95.7 MB
* 量化和重新训练的 TensorFlow Mobile Inception 3 模型:22.4 MB
......@@ -118,7 +118,7 @@ target 'HelloTFLite'
![](img/b4b1750b-cc97-42f8-a032-226b595d7e46.png)Figure 11.1 A new Xcode iOS project using the TensorFlow Lite podWe're only showing you how to use the TensorFlow Lite pod in your iOS apps. There's another way to add TensorFlow Lite to iOS, similar to building the custom TensorFlow Mobile iOS library that we've done many times in the previous chapters. For more information on how to build your own custom TensorFlow Lite iOS library, see the documentation at [https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/g3doc/ios.md](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/g3doc/ios.md).
4. 将第 2 章,*通过迁移学习*对图像进行分类的[UIG4] iOS 应用中的类似 UI 代码复制到`ViewController.mm`,后者使用`UITapGestureRecognizer`捕获用户的手势 屏幕上,然后调用`RunInferenceOnImage`方法,该方法将加载 TensorFlow Lite 模型文件:
4. 将第 2 章,“通过迁移学习对图像进行分类”的 iOS 应用中的类似 UI 代码复制到`ViewController.mm`,后者使用`UITapGestureRecognizer`捕获用户的手势 屏幕上,然后调用`RunInferenceOnImage`方法,该方法将加载 TensorFlow Lite 模型文件:
```py
NSString* RunInferenceOnImage() {
......@@ -200,7 +200,7 @@ NSString* RunInferenceOnImage() {
在第 2 章,*通过迁移学习*对图像进行分类中,我们重新训练了 MobileNet TensorFlow 模型来进行狗的品种识别任务,并且要在 TensorFlow Lite 中使用这种模型,我们首先需要进行转换 使用 TensorFlow Lite 转换工具将其转换为 TensorFlow Lite 格式:
在第 2 章,”通过迁移学习对图像进行分类“中,我们重新训练了 MobileNet TensorFlow 模型来进行狗的品种识别任务,并且要在 TensorFlow Lite 中使用这种模型,我们首先需要进行转换 使用 TensorFlow Lite 转换工具将其转换为 TensorFlow Lite 格式:
```py
bazel build tensorflow/contrib/lite/toco:toco
......@@ -249,7 +249,7 @@ Converting unsupported operation: NonMaxSuppressionV2
Converting unsupported operation: ZerosLike
```
以下命令尝试将第 4 章*将具有惊人艺术风格的图片*转换为神经样式转换模型为 TensorFlow Lite 格式:
以下命令尝试将第 4 章的神经风格迁移模型转换为 TensorFlow Lite 格式:
```py
bazel-bin/tensorflow/contrib/lite/toco/toco \
......@@ -262,7 +262,7 @@ bazel-bin/tensorflow/contrib/lite/toco/toco \
--input_shapes=1,224,224,3:26
```
以下命令尝试在第 10 章,*中构建模型,以构建类似 AlphaZero 的移动游戏应用程序*
以下命令尝试转换第 10 章中的模型
```py
bazel-bin/tensorflow/contrib/lite/toco/toco \
......@@ -292,7 +292,7 @@ bazel-bin/tensorflow/contrib/lite/toco/toco \
为简单起见,我们将仅演示如何在新的 Android 应用程序中将 TensorFlow Lite 与预构建的 TensorFlow Lite MobileNet 模型一起添加,并在此过程中发现一些有用的技巧。 有一个使用 TensorFlow Lite 的示例 Android 应用程序,[您可能希望首先在具有 API 级别的 Android 设备上与 Android Studio 一起运行](https://www.tensorflow.org/mobile/tflite/demo_android)。在执行以下步骤在新的 Android 应用中使用 TensorFlow Lite 之前,至少需要 15 个(版本至少为 4.0.3)。 如果您成功构建并运行了演示应用程序,则在 Android 设备上移动时,应该能够通过设备摄像头和 TensorFlow Lite MobileNet 模型看到识别出的对象。
现在执行以下步骤来创建一个新的 Android 应用程序,并添加 TensorFlow Lite 支持以对图像进行分类,就像我们在第 2 章,*通过转印学习*对图像进行分类中的 HelloTensorFlow Android 应用程序一样。 ]:
现在执行以下步骤来创建一个新的 Android 应用程序,并添加 TensorFlow Lite 支持以对图像进行分类,就像我们在第 2 章,“通过迁移学习对图像进行分类”中的 HelloTensorFlow Android 应用程序一样。 ]:
1. 创建一个新的 Android Studio 项目,并将应用命名为`HelloTFLite`。 将最低 SDK 设置为 API 15:Android 4.0.3,并接受所有其他默认设置。
2. 创建一个新的`assets`文件夹,从演示应用程序`tensorflow/contrib/lite/java/demo/app/src/main/assets`文件夹中拖放`mobilenet_quant_v1_224.tflite` TensorFlow Lite 文件和`labels.txt`文件,以及测试图像 到 HelloTFLite 应用程序的`assets`文件夹中。
......@@ -397,7 +397,7 @@ private MappedByteBuffer loadModelFile(Activity activity) throws IOException {
}
```
回想一下,在步骤 4 中,我们必须在 build.gradle 文件中添加`noCompress "tflite"`,否则`openFd`方法将导致错误。 该方法返回模型的映射版本,我们在第 6 章,*中以自然语言描述图像时使用`convert_graphdef_memmapped_format`工具将 TensorFlow Mobile 模型转换为映射格式。 和第 9 章,“使用 GAN 生成和增强图像”。
回想一下,在步骤 4 中,我们必须在 build.gradle 文件中添加`noCompress "tflite"`,否则`openFd`方法将导致错误。 该方法返回模型的映射版本,我们在第 6 章,“使用自然语言描述图像”时使用`convert_graphdef_memmapped_format`工具将 TensorFlow Mobile 模型转换为映射格式。 和第 9 章,“使用 GAN 生成和增强图像”。
这就是在新的 Android 应用程序中加载并运行预构建的 TensorFlow Lite 模型所需的一切。 如果您有兴趣使用经过重新训练和转换的 TensorFlow Lite 模型(如我们在 iOS 应用程序,Android 应用程序中所做的那样),或者自定义 TensorFlow Lite 模型(如果您成功获得了转换后的模型),则可以在 HelloTFLite 应用程序。 我们将暂时保留最先进的 TensorFlow Lite,并继续为 iOS 开发人员介绍另一个非常酷的 WWDC 重量级主题。
......@@ -411,13 +411,13 @@ private MappedByteBuffer loadModelFile(Activity activity) throws IOException {
苹果的 [Core ML 框架](https://developer.apple.com/documentation/coreml)使 iOS 开发人员可以轻松地在运行 iOS 11 或更高版本的 iOS 应用中使用经过训练的机器学习模型,并构建 Xcode 9 或更高版本。 您可以下载并使用 Apple 已在[这里](https://developer.apple.com/machine-learning)提供的 Core ML 格式的经过预先训练的模型,也可以使用称为 coremltools 的 Python 工具,[Core ML 社区工具](https://apple.github.io/coremltools)来将其他机器学习和深度学习模型转换为 Core ML 格式。
Core ML 格式的预训练模型包括流行的 MobileNet 和 Inception V3 模型,以及更新的 ResNet50 模型(我们在第 10 章*中简要讨论了残留网络) 就像手机游戏应用*一样)。 可以转换为 Core ML 格式的模型包括使用 Caffe 或 Keras 构建的深度学习模型,以及传统的机器学习模型,例如线性回归,支持向量机和通过 [Scikit Learn](http://scikit-learn.org) 构建的决策树,这是一个非常流行的 Python 机器学习库。
Core ML 格式的预训练模型包括流行的 MobileNet 和 Inception V3 模型,以及更新的 ResNet50 模型(我们在第 10 章中简要讨论了残差网络)。 可以转换为 Core ML 格式的模型包括使用 Caffe 或 Keras 构建的深度学习模型,以及传统的机器学习模型,例如线性回归,支持向量机和通过 [Scikit Learn](http://scikit-learn.org) 构建的决策树,这是一个非常流行的 Python 机器学习库。
因此,如果您想在 iOS 中使用传统的机器学习模型,那么 Scikit Learn 和 Core ML 绝对是必经之路。 尽管这是一本有关移动 TensorFlow 的书,但构建智能应用程序有时不需要深度学习。 在某些用例中,经典机器学习完全有意义。 此外,Core ML 对 Scikit Learn 模型的支持是如此流畅,以至于我们不能拒绝快速浏览,因此您将在必要时知道何时短暂使用移动 TensorFlow 技能。
如果要使用 Apple 预先训练的 MobileNet Core ML 模型,请在[这个页面](https://developer.apple.com/documentation/vision/classifying_images_with_vision_and_core_ml)上查看 Apple 不错的示例代码项目,它使用 Vision 和 Core ML 对图像进行分类,还观看[这个页面](https://developer.apple.com/machine-learning)上列出的有关核心 ML 的 WWDC 2017 视频。
在接下来的两个部分中,我们将向您展示两个教程,该教程以 TensorFlow 为后端,在 Keras 中如何转换和使用 Scikit Learn 模型和股票预测 RNN 模型,它们是在第 8 章, *使用 RNN* 预测股票价格。 您将在 Objective-C 和 Swift 中看到使用源代码从头开始构建的完整 iOS 应用程序,以使用转换后的 Core ML 模型。 如果短语“从头开始”使您兴奋并使您想起 AlphaZero,则您可能喜欢上一章第 10 章,*构建类似 AlphaZero 的移动游戏应用程序*
在接下来的两个部分中,我们将向您展示两个教程,该教程以 TensorFlow 为后端,在 Keras 中如何转换和使用 Scikit Learn 模型和股票预测 RNN 模型,它们是在第 8 章, *使用 RNN* 预测股票价格。 您将在 Objective-C 和 Swift 中看到使用源代码从头开始构建的完整 iOS 应用程序,以使用转换后的 Core ML 模型。 如果短语“从头开始”使您兴奋并使您想起 AlphaZero,则您可能喜欢上一章第 10 章,“构建类似 AlphaZero 的移动游戏应用程序”
......@@ -498,7 +498,7 @@ print(svm.predict(X_new))
这将使用支持向量机模型作为`[298014.41462535 320991.94354092 404822.78465954]`输出预测的房价。 我们不会讨论哪种模型更好,如何使线性回归或支持向量机模型更好地工作,或者如何在 Scikit Learn 支持的所有算法中选择更好的模型-有很多不错的书籍和在线资源介绍了这些内容。 话题。
要将两个 Scikit Learn 模型`lr``svm`转换为可在您的 iOS 应用中使用的 Core ML 格式,您需要首先安装 [Core ML 工具](https://github.com/apple/coremltools)。 我们建议您在我们在第 8 章,*用 RNN* 预测股价和第 10 章预测并创建的 TensorFlow 和 Keras 虚拟环境中使用`pip install -U coremltools`安装这些软件 ],*构建支持 AlphaZero 的手机游戏应用程序*,因为我们还将在下一部分中使用它来转换 Keras 模型。
要将两个 Scikit Learn 模型`lr``svm`转换为可在您的 iOS 应用中使用的 Core ML 格式,您需要首先安装 [Core ML 工具](https://github.com/apple/coremltools)。 我们建议您在我们在第 8 章,“用 RNN 预测股价”和第 10 章“构建支持 AlphaZero 的手机游戏应用程序”中创建的 TensorFlow 和 Keras 虚拟环境中使用`pip install -U coremltools`安装这些软件,因为我们还将在下一部分中使用它来转换 Keras 模型。
现在,只需运行以下代码即可将两个 Scikit Learn 模型转换为 Core ML 格式:
......@@ -567,7 +567,7 @@ override func viewDidLoad() {
coremltools 工具还正式支持转换使用 Keras 构建的模型(请参见[`keras.convert`链接](https://apple.github.io/coremltools/coremltools.converters.html))。 截至 2018 年 3 月,最新版本的 coremltools 0.8 的版本可与 TensorFlow 1.4 和 Keras 2.1.5 配合使用,我们在第 8 章,*预测中使用了 Keras 股票预测模型 RNN* 的股票价格。 您可以使用两种方法使用 coremltools 生成模型的 Core ML 格式。 首先是在训练模型后,直接在 Python Keras 代码中调用 coremltools 的`convert``save`方法。 例如,将下面的最后三行代码添加到`model.fit`之后的`ch8/python/keras/train.py`文件中:
coremltools 工具还正式支持转换使用 Keras 构建的模型(请参见[`keras.convert`链接](https://apple.github.io/coremltools/coremltools.converters.html))。 截至 2018 年 3 月,最新版本的 coremltools 0.8 的版本可与 TensorFlow 1.4 和 Keras 2.1.5 配合使用,我们在第 8 章,“使用 RNN 预测股票价格”中使用了 Keras 股票预测模型。 您可以使用两种方法使用 coremltools 生成模型的 Core ML 格式。 首先是在训练模型后,直接在 Python Keras 代码中调用 coremltools 的`convert``save`方法。 例如,将下面的最后三行代码添加到`model.fit`之后的`ch8/python/keras/train.py`文件中:
```py
model.fit(
......@@ -590,7 +590,7 @@ coreml_model.save("Stock.mlmodel")
![](img/fdf48153-937d-4066-9dd3-cc13ce841e6e.png)Figure 11.8 Showing the stock prediction Core ML model converted from Keras and TensorFlow in an Objective-C app
使用 coremltools 生成模型的 Core ML 格式的另一种方法是,首先将 Keras 构建的模型保存为 Keras HDF5 模型格式,这是我们在第 10 章,*中使用的格式 在转换为 AlphaZero TensorFlow 检查点文件之前,先构建类似 AlphaZero 的移动游戏应用程序*。 为此,只需运行`model.save('stock.h5')`
使用 coremltools 生成模型的 Core ML 格式的另一种方法是,首先将 Keras 构建的模型保存为 Keras HDF5 模型格式,这是我们在第 10 章,“构建类似 AlphaZero 的移动游戏应用程序”中,在转换为 AlphaZero TensorFlow 检查点文件之前使用的格式。 为此,只需运行`model.save('stock.h5')`
然后,您可以使用以下代码片段将 Keras `.h5`模型转换为 Core ML 模型:
......@@ -694,7 +694,7 @@ class ViewController: UIViewController {
请注意,就像使用 TensorFlow Mobile iOS 应用程序一样,我们使用`bidirectional_1_input``activation_1_Identity`来设置输入并获取输出。
如果尝试转换在第 10 章,*构建类似 AlphaZero 的移动游戏应用程序*中在 Keras 中构建和训练的 AlphaZero 模型,则会收到错误消息`ValueError: Unknown loss function:softmax_cross_entropy_with_logits`。 如果您尝试转换我们在本书中构建的其他 TensorFlow 模型,则可以使用的最佳非官方工具是`https://github.com/tf-coreml/tf-coreml`上的 TensorFlow 到核心 ML 转换器。 不幸的是,类似于 TensorFlow Lite,它仅支持有限的 TensorFlow 操作集,其中一些原因是 Core ML 的限制,另一些原因是 tf-coreml 转换器的限制。 我们不会详细介绍将 TensorFlow 模型转换为 Core ML 模型的细节。 但是至少您已经了解了如何转换和使用 Scikit Learn 构建的传统机器学习模型以及基于 Keras 的 RNN 模型,该模型有望为您提供构建和使用 Core ML 模型的良好基础。 当然,如果您喜欢 Core ML,则应留意其将来的改进版本,以及 coremltools 和 tf-coreml 转换器的将来版本。 关于 Core ML,我们还没有涉及很多内容-要了解其确切功能,请参阅[完整的 API 文档](https://developer.apple.com/documentation/coreml/core_ml_api)
如果尝试转换在第 10 章,“构建类似 AlphaZero 的移动游戏应用程序”中在 Keras 中构建和训练的 AlphaZero 模型,则会收到错误消息`ValueError: Unknown loss function:softmax_cross_entropy_with_logits`。 如果您尝试转换我们在本书中构建的其他 TensorFlow 模型,则可以使用的最佳非官方工具是`https://github.com/tf-coreml/tf-coreml`上的 TensorFlow 到核心 ML 转换器。 不幸的是,类似于 TensorFlow Lite,它仅支持有限的 TensorFlow 操作集,其中一些原因是 Core ML 的限制,另一些原因是 tf-coreml 转换器的限制。 我们不会详细介绍将 TensorFlow 模型转换为 Core ML 模型的细节。 但是至少您已经了解了如何转换和使用 Scikit Learn 构建的传统机器学习模型以及基于 Keras 的 RNN 模型,该模型有望为您提供构建和使用 Core ML 模型的良好基础。 当然,如果您喜欢 Core ML,则应留意其将来的改进版本,以及 coremltools 和 tf-coreml 转换器的将来版本。 关于 Core ML,我们还没有涉及很多内容-要了解其确切功能,请参阅[完整的 API 文档](https://developer.apple.com/documentation/coreml/core_ml_api)
......
......@@ -6,7 +6,7 @@
根据 Wikipedia 的说法,“ Raspberry Pi 是 Raspberry Pi 基金会在英国开发的一系列小型单板计算机,旨在促进学校和发展中国家的基础计算机科学教学。” [Raspberry Pi 的官方网站](https://www.raspberrypi.org)将其描述为“一种小型且价格合理的计算机,可以用来学习编程。” 如果您以前从未听说过或使用过 Raspberry Pi,请访问其网站,然后您很快就会爱上这个很棒的小东西。 几乎没有什么功能-实际上,TensorFlow 的开发人员从 2016 年中期开始在早期版本的 Raspberry Pi 上提供了 TensorFlow,因此我们可以在微型计算机上运行复杂的 TensorFlow 模型,您只需花费 35 美元即可购买到。 这可能超出了“基础计算机科学的教学”或“学习编程”的范围,但另一方面,如果我们考虑过去几年中移动设备的所有飞速发展,那么看到这一点我们就不会感到惊讶 如何在越来越小的设备中实现越来越多的功能。
在本章中,我们将进入 Raspberry Pi 的有趣世界,Raspberry Pi 是 TensorFlow 正式支持的最小设备。 我们将首先介绍如何获取和设置新的 Raspberry Pi 3 B 板,包括本章中使用的所有必要配件,以使其能够看,听和说。 然后,我们将介绍如何使用 [GoPiGo 机器人基础套件](https://www.dexterindustries.com/shop/gopigo3-robot-base-kit),将 Raspberry Pi 板变成一个可以移动的机器人。 之后,我们将提供最简单的工作步骤,以便在 Raspberry Pi 上设置 TensorFlow 1.6 并构建其示例 Raspberry Pi 应用程序。 我们还将讨论如何集成图像分类,这是我们在第 2 章,*通过迁移学习*对图像进行分类时使用的模型,并通过文字转语音功能使机器人告诉我们它可以识别的内容 以及如何集成音频识别,这是我们在第 5 章,“了解简单语音命令”中使用的模型以及 GoPiGo API,可让您使用语音命令来控制机器人的运动 。
在本章中,我们将进入 Raspberry Pi 的有趣世界,Raspberry Pi 是 TensorFlow 正式支持的最小设备。 我们将首先介绍如何获取和设置新的 Raspberry Pi 3 B 板,包括本章中使用的所有必要配件,以使其能够看,听和说。 然后,我们将介绍如何使用 [GoPiGo 机器人基础套件](https://www.dexterindustries.com/shop/gopigo3-robot-base-kit),将 Raspberry Pi 板变成一个可以移动的机器人。 之后,我们将提供最简单的工作步骤,以便在 Raspberry Pi 上设置 TensorFlow 1.6 并构建其示例 Raspberry Pi 应用程序。 我们还将讨论如何集成图像分类,这是我们在第 2 章,“通过迁移学习对图像进行分类”时使用的模型,并通过文字转语音功能使机器人告诉我们它可以识别的内容 以及如何集成音频识别,这是我们在第 5 章,“了解简单语音命令”中使用的模型以及 GoPiGo API,可让您使用语音命令来控制机器人的运动 。
最后,我们将向您展示如何使用 TensorFlow 和 OpenAI Gym,这是一个用于开发和比较强化学习算法的 Python 工具包,如何在模拟环境中实现强大的强化学习算法,以使我们的机器人能够在真实的身体中移动和平衡 环境。
......@@ -344,7 +344,7 @@ tensorflow/contrib/pi_examples/camera/gen/bin/camera
看看 C ++源代码`tensorflow/contrib/pi_examples/label_image/label_image.cc``tensorflow/contrib/pi_examples/camera/camera.cc`,您会看到它们使用与前几章中的 iOS 应用类似的 C ++代码来加载模型图文件,准备输入张量,运行 模型,并获得输出张量。
默认情况下,摄像机示例还使用`label_image/data`文件夹中解压缩的预构建 Inception 模型。 但是对于您自己的特定图像分类任务,您可以像通过第 2 章,*使用*通过迁移学习对图像进行分类一样,提供通过迁移学习重新训练的模型。 ]参数在运行两个示例应用程序时
默认情况下,摄像机示例还使用`label_image/data`文件夹中解压缩的预构建 Inception 模型。 但是对于您自己的特定图像分类任务,提供通过迁移学习重新训练的模型。您可以像第 2 章,“通过迁移学习对图像进行分类”一样,在运行两个示例应用程序时使用`--graph`参数
通常,语音是 Raspberry Pi 机器人与我们互动的主要 UI。 理想情况下,我们应该运行 TensorFlow 支持的自然声音**文本到语音****TTS**)模型,例如 [WaveNet](https://deepmind.com/blog/wavenet-generative-model-raw-audio)[Tacotron](https://github.com/keithito/tacotron),但运行和部署不在本章范围之内。 这样的模型。 事实证明,我们可以使用称为 [CMU **Flite**](http://www.festvox.org/flite) 的简单得多的 TTS 库,它提供了相当不错的 TTS,并且 只需一个简单的命令即可安装它:`sudo apt-get install flite`。 如果要安装最新版本的 Flite 以期希望获得更好的 TTS 质量,只需从链接下载最新的 Flite 源并进行构建。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册