
本书详细阐述了与TensorFlow项目开发相关的基本解决方案,主要包括TensorFlow和机器学习概述、利用机器学习探测外太空中的系外行星、情感分析、数字分类、语音到文本的转换、预测股票价格、信用卡欺诈检测、贝叶斯深度学习、图像匹配和分类、推荐系统、大规模对象检测、生成图书脚本、深度强化学习与游戏、部署机器学习模型等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。
本书既可作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。
前 言
TensorFlow 改变了机器学习的应用方式。本书告诉开发人员如何利用 TensorFlow 在各种实际项目中的优势—简单性、高效性和灵活性。在本书的帮助下,开发人员不仅可以学习如何使用不同的数据集构建高级项目,还可以使用 TensorFlow 生态系统中的一系列库来解决常见问题。
首先,开发人员将了解如何使用 TensorFlow 进行机器学习项目。我们将介绍使用 TensorForest 和 TensorBoard 检测系外行星、使用 TensorFlow.js 进行情感分析、使用 TensorFlow Lite 进行数字分类等项目。
当开发人员阅读本书时,将可以在各种现实领域中构建项目,包括自然语言处理(Natural Language Processing,NLP)、高斯过程(Gaussian Process)、自动编码器(Autoencoder)、推荐系统(Recommender System)、贝叶斯神经网络(Bayesian Neural Network)、生成对抗网络(Generative Adversarial Network,GAN)、胶囊网络(Capsule Network)和强化学习(Reinforcement Learning)等。开发人员将学习如何与 Spark API 一起使用 TensorFlow,并使用 TensorFlow 探索 GPU 加速计算以检测对象,然后了解如何训练和开发循环神经网络(Recurrent Neural Network,RNN)模型以生成图书脚本。
到本书结束时,开发人员将获得较为全面的 TensorFlow 和机器学习专业知识,足以在工作中构建成熟的机器学习项目。
本书适合的读者
如果你是具有 TensorFlow 基础知识的数据分析师、数据科学家、机器学习专业人员或深度学习爱好者,那么本书非常适合你。如果你想使用监督学习、无监督学习和强化学习技术在机器学习领域中构建端到端项目,那么本书也适合你。
本书内容综述
本书共分 15 章,各章内容分述如下。
第 1 章“TensorFlow 和机器学习概述”,阐述了 TensorFlow 的基础知识,并使用逻辑回归构建了一个机器学习模型来对手写数字进行分类。
第 2 章“利用机器学习探测外太空中的系外行星”,介绍了如何使用基于决策树的集合方法探测外太空中的系外行星。
第 3 章 “使用 TensorFlow.js 在浏览器中进行情感分析”,阐述了如何使用 TensorFlow.js 在 Web 浏览器上训练和构建模型。本章将建立一种使用电影评论数据集的情感分析模型,并将其部署到 Web 浏览器以进行预测。
第 4 章“使用 TensorFlow Lite 进行数字分类”,重点是构建一个深度学习模型,用于对手写数字进行分类,并使用 TensorFlow Lite 将其转换为适合移动设备的格式。本章还介绍了 TensorFlow Lite 的架构以及如何使用 TensorBoard 可视化神经网络。
第 5 章“使用 NLP 进行从语音到文本的转换和主题的提取”,重点是通过在 TensorFlow 中使用 Google Speech Command 数据集了解 Google 的 Speech-to-Text 框架和预建模型的各种选项。
第 6 章“使用高斯过程回归预测股票价格”,解释了贝叶斯统计中一种被称为高斯过程的流行预测模型。本章还将使用构建在 TensorFlow 之上的 GpFlow 库中的高斯过程来开发股票价格预测模型。
第 7 章“使用自动编码器进行信用卡欺诈检测”,引入了一种被称为自动编码器的降维(Dimensionality Reduction)技术。本章将通过使用 TensorFlow 和 Keras 构建自动编码器来识别信用卡数据集中的欺诈性交易。
第 8 章“使用贝叶斯神经网络生成交通标志分类器中的不确定性”,解释了贝叶斯神经网络,它可以帮助开发人员量化预测中的不确定性。本章还将使用 TensorFlow 构建贝叶斯神经网络,以对德国交通标志进行分类。
第 9 章“使用 DiscoGAN 从鞋子图像生成匹配的手提包图像”,引入了一种被称为 Discovery GAN(DiscoGAN)的新型 GAN。开发人员将了解其架构与标准 GAN 的不同之处,以及它如何在风格迁移问题中使用。最后,本章在 TensorFlow 中构建了一个 DiscoGAN 模型,从鞋子图像中生成匹配其风格的手提包图像,或者反过来,从手提包图像生成匹配其风格的鞋子图像。
第 10 章“使用胶囊网络对服装图像进行分类”,实现了最新的图像分类模型—胶囊网络。本章将讨论其架构并解释它在 TensorFlow 中实现的细微差别。最后,本章还使用了 Fashion MNIST 数据集和胶囊网络模型对服装图像进行分类。
第 11 章“使用 TensorFlow 制作商品推荐系统”,讨论了使用 TensorFlow 推荐优质商品的技术,例如矩阵分解(SVD++)、学习排名和卷积神经网络变体等。
第 12 章“使用 TensorFlow 进行大规模的对象检测”,探讨了由 Yahoo!公司开发的 TensorFlowOnSpark 框架,它可以用于 Spark 集群上的分布式深度学习。开发人员将了解如何对大规模图像数据集应用 TensorFlowOnSpark,并训练网络以检测对象。
第 13 章“使用 LSTM 生成图书脚本”,解释了为什么 LSTM 在生成新文本时很有用。本章使用了某一本图书中的文字脚本来创建基于 LSTM 的深度学习模型,该模型可以自己生成新的图书脚本。
第 14 章“使用深度强化学习玩《吃豆人》游戏”,解释了使用强化学习来训练模型玩《吃豆人》游戏,并在这个过程中帮助开发人员理解强化学习。
第 15 章“在生产环境中部署机器学习模型”,介绍了 TensorFlow 生态系统的其他组件,这些组件对于在生产环境中部署模型非常有用。本章还介绍了各行业的人工智能应用、深度学习的局限性以及人工智能的道德规范等。
充分利用本书
要充分利用本书,请从 GitHub 存储库下载本书代码,并使用 Jupyter Notebook 中的代码进行练习。此外,还可以尝试修改作者提供的实现。
下载示例代码文件
读者可访问http://www.packtpub.com并通过个人账户下载示例代码文件。另外,在http://www.packtpub.com/support中注册成功后,我们将以电子邮件的方式将相关文件发与读者。具体步骤如下。
(1)利用电子邮箱或密码在我们的网站 www.packtpub.com 上登录或注册。
(2)选择 SUPPORT(支持)选项卡。
(3)单击 Code Downloads&Errata(代码下载和勘误表)。
(4)在 Search(搜索)框中输入图书名称 TensorFlow Machine Learning Projects,然后按屏幕提示操作。
下载文件后,请确保使用以下最新版本软件解压缩或解压缩文件夹:
? WinRAR/7-Zip(Windows 系统)。
? Zipeg/iZip/UnRarX(Mac 系统)。
? 7-Zip/PeaZip(Linux 系统)。
本书的代码包已经在 GitHub 上托管,网址为 https://github.com/PacktPublishing/TensorFlow-Machine-Learning-Projects。
此外,读者也可访问https://github.com/PacktPublishing/以了解丰富的代码和视频资源。
最后读者还可访问https://www.packtpub.com/sites/default/files/downloads/9781789132212_ColorImages.pdf以下载并查看书中的彩色图像。
本书约定
本书包含许多区分不同类型信息的文本样式,以下是一些示例及其含义的解释。
(1)CodeInText:表示文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄等。以下段落就是一个示例。
接下来实现一个函数 freeze_sesssion,它将采用 TensorFlow 会话作为输入,将所有变量转换为常量,并返回冻结的图。执行此函数后,开发人员将在<model_folder>/logs/freeze 文件夹中获取一个名为 MNIST_model.pb 的冻结图文件。
(2)代码块显示如下:
tf.constant(
value,
dtype=None,
shape=None,
name='const_name',
verify_shape=False
)
(3)任何命令行输入或输出都采用如下所示的粗体代码形式:
const1 (x): Tensor("x:0", shape=(), dtype=int32)
const2 (y): Tensor("y:0", shape=(), dtype=float32)
const3 (z): Tensor("z:0", shape=(), dtype=float16)
(4)新术语和重要单词以粗体显示,并提供了如下所示的中英文对照的形式。
随着硬件的创新,许多公司也在开发针对神经网络推理进行优化的 GPU 和数字信号处理器(Digital Signal Processor,DSP)。TensorFlow Lite 提供 Android 神经网络 API,可以在这些设备上执行硬件加速。
该图标旁边的文字表示警告或重要的信息。
该图标旁边的文字表示提示或技巧。
关于作者
Ankit Jain 目前在美国优步公司的机器学习研究部门 Uber AI Labs 担任高级研究员。他的工作主要涉及将深度学习方法应用于从预测到食品交付、再到自动驾驶汽车等各类需要。在此之前,他曾在美国银行、Facebook 和其他初创企业担任过各种数据科学方面的职务。他曾在许多顶级人工智能会议和大学担任特邀发言人,包括加州大学伯克利分校、O’Reilly AI 会议等。他对教学非常感兴趣,并通过各种初创企业和训练营为超过 500 名 AI 学生提供了指导。他在加州大学伯克利分校获得硕士学位,在印度孟买理工学院获得学士学位。
“非常感谢 Packt 团队让我有机会分享我的知识。特别感谢 Rhea Henriques 的真知灼见和优秀的编辑能力。最后,我还要感谢合著者 Armando 和 Amita 的建议,以及组稿编辑 Varsha Shetty,正是她激励我写完这本书。”
Armando Fandango 利用他在深度学习、机器学习、分布式计算和计算方法方面的专业知识,创造了很多卓越的 AI 产品,并在多家初创公司和大型企业担任首席数据科学家和董事的职务。他一直在为基于 AI 的高科技创业公司提供咨询服务。Armando 撰写了 Python Data Analysis-Second Edition 和 Mastering TensorFlow 等多本书籍。他还在国际期刊和会议上发表了研究成果。
“非常感谢 Rhea Henriques 努力让本书以最高质量出版,并与所有作者密切合作。我很感激 Amita 和 Ankit 分享他们的经验和知识。”
Amita Kapoor 是德里大学 SRCASW 电子系副教授。她讲授神经网络课程已有二十年之久。在攻读博士学位期间,她获得了著名的 DAAD 奖学金,这使她能够在德国卡尔斯鲁厄(Karlsruhe)理工学院完成部分研究工作。她在 2008 年国际光子学大会上被授予最佳演讲奖。作为 ACM、IEEE、INNS 和 ISBS 的成员,她在国际期刊和会议上发表了 40 多篇论文。她的研究领域包括机器学习、人工智能、神经网络、机器人技术以及人工智能中的伦理道德。她与 Packt Publishing 合作出版了 TensorFlow 1.x Deep Learning Cookbook 一书。
“特别感谢 Narotam Singh,如果没有他帮助建立群组,我就不可能完成这本书。真诚感谢校长 Payal 博士、Richa 女士、Punita 博士和 Deepali 女士。感谢 Armando 和 Ankit 分享他们的见解。也感谢 Packt 的团队,特别感谢 Manthan Patel 让我参与这个项目,并感谢 Rhea Henriques 的支持。”
关于审稿者
Sujit Pal 是 Reed-Elsevier 集团旗下 Elsevier Labs 的技术研究主管,他的兴趣领域包括语义搜索、自然语言处理、机器学习和深度学习。在 Elsevier,他参与了多项计划,包括搜索质量测量和改进、图像分类和重复检测,以及医学和科学语料库的注释和本体开发。他与 Antonio Gulli 共同撰写了一本关于深度学习的书,并在他的博客 Salmon Run 上撰写了大量相关技术的文章。
Meng-Chieh Ling 拥有卡尔斯鲁厄理工学院的理论物理学博士学位。在获得博士学位后,他加入了慕尼黑的 The Data Incubator Reply,后来成为达姆施塔特 AGT 国际实习生。六个月后,他被提升为高级数据科学家,目前在娱乐领域工作。
目 录
第1章 TensorFlow和机器学习概述 1
1.1 关于 TensorFlow 1
1.2 TensorFlow 核心 API 2
1.3 计算图 11
1.4 机器学习、分类和逻辑回归 18
1.5 使用 TensorFlow 进行逻辑回归 21
1.6 使用 Keras 进行逻辑回归 24
1.7 小结 26
1.8 问题 26
1.9 延伸阅读 26
第2章 利用机器学习探测外太空中的系外行星 27
2.1 关于决策树 27
2.2 集成学习的必要性 28
2.3 基于决策树的集成方法 29
2.4 TensorFlow 中基于决策树的集成 32
2.5 探测外太空的系外行星 34
2.6 建立用于系外行星探测的 TFBT 模型 38
2.7 小结 42
2.8 问题 42
2.9 延伸阅读 43
第3章 使用TensorFlow.js在浏览器中进行情感分析 44
3.1 理解 TensorFlow.js 45
3.2 理解 Adam 优化 46
3.3 理解分类交叉熵损失 46
3.4 理解单词嵌入 47
3.5 构建情感分析模型 48
3.6 使用 TensorFlow.js 在浏览器中运行模型 51
3.7 小结 55
3.8 问题 55
第4章 使用TensorFlow Lite进行数字分类 56
4.1 关于 TensorFlow Lite 56
4.2 分类模型评估指标 58
4.3 使用 TensorFlow Lite 对数字进行分类 59
4.4 小结 69
4.5 问题 70
第5章 使用NLP进行从语音到文本的转换和主题的提取 71
5.1 关于 Speech-to-Text 框架和工具包 71
5.2 Google 语音命令数据集 72
5.3 神经网络架构 73
5.4 训练模型 74
5.5 小结 77
5.6 问题 77
5.7 延伸阅读 77
第6章 使用高斯过程回归预测股票价格 79
6.1 理解贝叶斯规则 79
6.2 贝叶斯推理 80
6.3 高斯过程 81
6.4 将高斯过程应用于股市预测 84
6.5 创建股票价格预测模型 86
6.6 理解获得的结果 89
6.7 小结 99
6.8 问题 99
第7章 使用自动编码器进行信用卡欺诈检测 100
7.1 理解自动编码器 100
7.2 构建欺诈检测模型 101
7.3 小结 111
7.4 问题 111
第8章 使用贝叶斯神经网络生成交通标志分类器中的不确定性 112
8.1 理解贝叶斯深度学习 112
8.2 神经网络中的贝叶斯规则 113
8.3 理解 TensorFlow Probability、变分推断和蒙特卡罗方法 114
8.4 构建贝叶斯神经网络 116
8.5 定义、培训和测试模型 118
8.6 小结 129
8.7 问题 130
第9章 使用DiscoGAN从鞋子图像生成匹配的手提包图像 131
9.1 理解生成模型 131
9.2 理解 DiscoGAN 135
9.3 构建 DiscoGAN 模型 139
9.4 小结 148
9.5 问题 149
第10章 使用胶囊网络对服装图像进行分类 150
10.1 理解胶囊网络的重要性 150
10.2 理解胶囊 151
10.3 动态路由算法 153
10.4 用于对 Fashion MNIST 图像进行分类的胶囊网络 156
10.5 训练和测试模型 160
10.6 重建样本图像 167
10.7 胶囊网络的局限性 169
10.8 小结 170
第11章 使用TensorFlow制作商品推荐系统 172
11.1 推荐系统 172
11.2 基于内容的过滤 173
11.3 协同过滤 174
11.4 混合系统 174
11.5 矩阵分解 175
11.6 Retailrocket 数据集简介 175
11.7 Retailrocket 数据集深入探究 176
11.8 预处理数据 177
11.9 Retailrocket 数据集推荐系统的矩阵分解模型 178
11.10 Retailrocket 数据集推荐系统的神经网络模型 181
11.11 小结 183
11.12 问题 183
11.13 延伸阅读 183
第12章 使用TensorFlow进行大规模的对象检测 184
12.1 Apache Spark 简介 185
12.2 理解分布式 TensorFlow 186
12.3 理解 TensorFlowOnSpark 191
12.4 使用 TensorFlowOnSpark 和 Sparkdl 进行对象检测 197
12.5 小结 202
第13章 使用LSTM生成图书脚本 204
13.1 理解循环神经网络 204
13.2 预处理数据 205
13.3 定义模型 207
13.4 训练模型 208
13.5 定义和训练文本生成模型 208
13.6 生成图书脚本 214
13.7 小结 217
13.8 问题 217
第14章 使用深度强化学习玩《吃豆人》游戏 218
14.1 强化学习 219
14.2 强化学习与监督学习和无监督学习的对比 219
14.3 强化学习的组成部分 220
14.4 OpenAI Gym 工具包 220
14.5 在 OpenAI Gym 中创建《吃豆人》游戏 222
14.6 用于深度强化学习的 DQN 224
14.7 将 DQN 应用于游戏 225
14.8 小结 230
14.9 延伸阅读 230
第15章 在生产环境中部署机器学习模型 231
15.1 在生产环境中实现 TensorFlow 231
15.2 建立 AI 应用程序的建议 237
15.3 深度学习的局限性 238
15.4 AI 在行业中的应用 238
15.5 AI 中的伦理道德考虑因素 239
15.6 小结 240
TensorFlow 改变了机器学习的应用方式。本书告诉开发人员如何利用 TensorFlow 在各种实际项目中的优势—简单性、高效性和灵活性。在本书的帮助下,开发人员不仅可以学习如何使用不同的数据集构建高级项目,还可以使用 TensorFlow 生态系统中的一系列库来解决常见问题。
TensorFlow 改变了机器学习的应用方式。本书告诉开发人员如何利用 TensorFlow 在各种实际项目中的优势—简单性、高效性和灵活性。在本书的帮助下,开发人员不仅可以学习如何使用不同的数据集构建高级项目,还可以使用 TensorFlow 生态系统中的一系列库来解决常见问题。