- 领导“谷歌大脑”的工程师Jeff Dean发来寄语
- 李航、余凯等人工智能领域专家倾力推荐
- 基于TensorFlow 1.1,包揽TensorFlow的新特性
- 技术内容全面,实战案例丰富,视野广阔
- 人脸识别、语音识别、图像和语音相结合等热点一应俱全
TensorFlow是深度学习的流行框架之一,极适合新手入门。谷歌公司正致力于建立一个相关软件和机器学习模型的开源生态系统,这是人工智能发展的技术风口。
本书基于TensorFlow1.1版本,深入TensorFlow基础原理、设计理念、编程模型、源码分析和模型构建、工业界应用、大规模数据训练等。全书分为基础篇、实战篇和提高篇三部分。
“基础篇”
人工智能入门,学习深度学习的方法。
TensorFlow基础原理、设计架构和编程模型。
常用API、批标准化、模型的存储与加载、队列及线程、实现一个自定义OP。
TensorBorad可视化的全面解析。
源码分析。
神经网络(CNN和RNN)的发展演化以及如何用TensorFlow实现这些网络。
第三方上层框架Keras和TFLearn的应用。
“实战篇”
用TensorFlow实现了神经网络。
用TensorFlow实现CNN、RNN、LSTM和自动编码器的各种示例。
TensorFlow在人脸识别、语音识别、智能机器人、语音和图像相结合以及生成式对抗网络(GAN)等领域的实际应用。
“提高篇”
TensorFlow的分布式原理、架构和模式。
移动端开发(Android、iOS和树莓派)。
TensorFlow的新特性,线性代数编程框架XLA、调试器Debugger、动态图Fold、生产环境Serving。
TensorFlow和Kubernetes相结合。
TensorFlowOnSpark。
硬件计算加速。
机器学习的评测体系。
本书深入浅出,理论联系实际,实战案例新颖,适合对TensorFlow感兴趣的各层次读者阅读。
TensorFlow 是谷歌公司开发的深度学习框架,也是目前深度学习的主流框架之一。本书从深度学习的基础讲起,深入TensorFlow框架原理、模型构建、源代码分析和网络实现等各个方面。全书分为基础篇、实战篇和提高篇三部分。基础篇讲解人工智能的入门知识,深度学习的方法,TensorFlow的基础原理、系统架构、设计理念、编程模型、常用API、批标准化、模型的存储与加载、队列与线程,实现一个自定义操作,并进行TensorFlow源代码解析,介绍卷积神经网络(CNN)和循环神经网络(RNN)的演化发展及其TensorFlow实现、TensorFlow的高级框架等知识;实战篇讲解如何用TensorFlow写一个神经网络程序并介绍TensorFlow实现各种网络(CNN、RNN和自编码网络等)并对MNIST数据集进行训练,讲解TensorFlow在人脸识别、自然语言处理、图像和语音的结合、生成式对抗网络等方面的应用;提高篇讲解TensorFlow的分布式原理、架构、模式、API,还会介绍TensorFlow XLA、TensorFlow Debugger、TensorFlow和Kubernetes结合、TensorFlowOnSpark、TensorFlow移动端应用,以及TensorFlow Serving、TensorFlow Fold和TensorFlow计算加速等其他特性。最后,附录中列出一些可供参考的公开数据集,并结合作者的项目经验介绍项目管理的一些建议。
第一篇 基础篇
第1章 人工智能概述 2
1.1 什么是人工智能 2
1.2 什么是深度学习 5
1.3 深度学习的入门方法 7
1.4 什么是TensorFlow 11
1.5 为什么要学TensorFlow 12
1.5.1 TensorFlow的特性 14
1.5.2 使用TensorFlow的公司 15
1.5.3 TensorFlow的发展 16
1.6 机器学习的相关赛事 16
1.6.1 ImageNet的ILSVRC 17
1.6.2 Kaggle 18
1.6.3 天池大数据竞赛 19
1.7 国内的人工智能公司 20
1.8 小结 22
第2章 TensorFlow环境的准备 23
2.1 下载TensorFlow 1.1.0 23
2.2 基于pip的安装 23
2.2.1 Mac OS环境准备 24
2.2.2 Ubuntu/Linux环境准备 25
2.2.3 Windows环境准备 25
2.3 基于Java的安装 28
2.4 从源代码安装 29
2.5 依赖的其他模块 30
2.5.1 numpy 30
2.5.2 matplotlib 31
2.5.3 jupyter 31
2.5.4 scikit-image 32
2.5.5 librosa 32
2.5.6 nltk 32
2.5.7 keras 33
2.5.8 tflearn 33
2.6 小结 33
第3章 可视化TensorFlow 34
3.1 PlayGround 34
3.1.1 数据 35
3.1.2 特征 36
3.1.3 隐藏层 36
3.1.4 输出 37
3.2 TensorBoard 39
3.2.1 SCALARS面板 40
3.2.2 IMAGES面板 41
3.2.3 AUDIO面板 42
3.2.4 GRAPHS面板 42
3.2.5 DISTRIBUTIONS面板 43
3.2.6 HISTOGRAMS面板 43
3.2.7 EMBEDDINGS面板 44
3.3 可视化的例子 44
3.3.1 降维分析 44
3.3.2 嵌入投影仪 48
3.4 小结 51
第4章 TensorFlow基础知识 52
4.1 系统架构 52
4.2 设计理念 53
4.3 编程模型 54
4.3.1 边 56
4.3.2 节点 57
4.3.3 其他概念 57
4.4 常用API 60
4.4.1 图、操作和张量 60
4.4.2 可视化 61
4.5 变量作用域 62
4.5.1 variable_scope示例 62
4.5.2 name_scope示例 64
4.6 批标准化 64
4.6.1 方法 65
4.6.2 优点 65
4.6.3 示例 65
4.7 神经元函数及优化方法 66
4.7.1 激活函数 66
4.7.2 卷积函数 69
4.7.3 池化函数 72
4.7.4 分类函数 73
4.7.5 优化方法 74
4.8 模型的存储与加载 79
4.8.1 模型的存储与加载 79
4.8.2 图的存储与加载 82
4.9 队列和线程 82
4.9.1 队列 82
4.9.2 队列管理器 85
4.9.3 线程和协调器 86
4.10 加载数据 87
4.10.1 预加载数据 87
4.10.2 填充数据 87
4.10.3 从文件读取数据 88
4.11 实现一个自定义操作 92
4.11.1 步骤 92
4.11.2 最佳实践 93
4.12 小结 101
第5章 TensorFlow源代码解析 102
5.1 TensorFlow的目录结构 102
5.1.1 contirb 103
5.1.2 core 104
5.1.3 examples 105
5.1.4 g3doc 105
5.1.5 python 105
5.1.6 tensorboard 105
5.2 TensorFlow源代码的学习方法 106
5.3 小结 108
第6章 神经网络的发展及其TensorFlow实现 109
6.1 卷积神经网络 109
6.2 卷积神经网络发展 110
6.2.1 网络加深 111
6.2.2 增强卷积层的功能 115
6.2.3 从分类任务到检测任务 120
6.2.4 增加新的功能模块 121
6.3 MNIST的AlexNet实现 121
6.3.1 加载数据 121
6.3.2 构建网络模型 122
6.3.3 训练模型和评估模型 124
6.4 循环神经网络 125
6.5 循环神经网络发展 126
6.5.1 增强隐藏层的功能 127
6.5.2 双向化及加深网络 129
6.6 TensorFlow Model Zoo 131
6.7 其他研究进展 131
6.7.1 强化学习 132
6.7.2 深度森林 132
6.7.3 深度学习与艺术 132
6.8 小结 133
第7章 TensorFlow的高级框架 134
7.1 TFLearn 134
7.1.1 加载数据 134
7.1.2 构建网络模型 135
7.1.3 训练模型 135
7.2 Keras 135
7.2.1 Keras的优点 136
7.2.2 Keras的模型 136
7.2.3 Keras的使用 137
7.3 小结 141
第二篇 实战篇
第8章 第一个TensorFlow程序 144
8.1 TensorFlow的运行方式 144
8.1.1 生成及加载数据 144
8.1.2 构建网络模型 145
8.1.3 训练模型 145
8.2 超参数的设定 146
8.3 小结 147
第9章 TensorFlow在MNIST中的应用 148
9.1 MNIST数据集简介 148
9.1.1 训练集的标记文件 148
9.1.2 训练集的图片文件 149
9.1.3 测试集的标记文件 149
9.1.4 测试集的图片文件 150
9.2 MNIST的分类问题 150
9.2.1 加载数据 150
9.2.2 构建回归模型 151
9.2.3 训练模型 151
9.2.4 评估模型 152
9.3 训练过程的可视化 152
9.4 MNIST的卷积神经网络 156
9.4.1 加载数据 157
9.4.2 构建模型 157
9.4.3 训练模型和评估模型 159
9.5 MNIST的循环神经网络 161
9.5.1 加载数据 161
9.5.2 构建模型 161
9.5.3 训练数据及评估模型 163
9.6 MNIST的无监督学习 164
9.6.1 自编码网络 164
9.6.2 TensorFlow的自编码网络实现 165
9.7 小结 169
第10章 人脸识别 170
10.1 人脸识别简介 170
10.2 人脸识别的技术流程 171
10.2.1 人脸图像采集及检测 171
10.2.2 人脸图像预处理 171
10.2.3 人脸图像特征提取 171
10.2.4 人脸图像匹配与识别 172
10.3 人脸识别的分类 172
10.3.1 人脸检测 172
10.3.2 人脸关键点检测 173
10.3.3 人脸验证 174
10.3.4 人脸属性检测 174
10.4 人脸检测 175
10.4.1 LFW数据集 175
10.4.2 数据预处理 175
10.4.3 进行检测 176
10.5 性别和年龄识别 178
10.5.1 数据预处理 179
10.5.2 构建模型 181
10.5.3 训练模型 182
10.5.4 验证模型 184
10.6 小结 185
第11章 自然语言处理 186
11.1 模型的选择 186
11.2 英文数字语音识别 187
11.2.1 定义输入数据并预处理数据 188
11.2.2 定义网络模型 188
11.2.3 训练模型 188
11.2.4 预测模型 189
11.3 智能聊天机器人 189
11.3.1 原理 190
11.3.2 最佳实践 191
11.4 小结 200
第12章 图像与语音的结合 201
12.1 看图说话模型 201
12.1.1 原理 202
12.1.2 最佳实践 203
12.2 小结 205
第13章 生成式对抗网络 206
13.1 生成式对抗网络的原理 206
13.2 生成式对抗网络的应用 207
13.3 生成式对抗网络的实现 208
13.4 生成式对抗网络的改进 214
13.5 小结 214
第三篇 提高篇
第14章 分布式TensorFlow 216
14.1 分布式原理 216
14.1.1 单机多卡和分布式 216
14.1.2 分布式部署方式 217
14.2 分布式架构 218
14.2.1 客户端、主节点和工作节点的关系 218
14.2.2 客户端、主节点和工作节点的交互过程 220
14.3 分布式模式 221
14.3.1 数据并行 221
14.3.2 同步更新和异步更新 222
14.3.3 模型并行 224
14.4 分布式API 225
14.5 分布式训练代码框架 226
14.6 分布式最佳实践 227
14.7 小结 235
第15章 TensorFlow线性代数编译框架XLA 236
15.1 XLA的优势 236
15.2 XLA的工作原理 237
15.3 JIT编译方式 238
15.3.1 打开JIT编译 238
15.3.2 将操作符放在XLA设备上 238
15.4 JIT编译在MNIST上的实现 239
15.5 小结 240
第16章 TensorFlow Debugger 241
16.1 Debugger的使用示例 241
16.2 远程调试方法 245
16.3 小结 245
第17章 TensorFlow和Kubernetes结合 246
17.1 为什么需要Kubernetes 246
17.2 分布式TensorFlow在Kubernetes中的运行 247
17.2.1 部署及运行 247
17.2.2 其他应用 253
17.3 小结 254
第18章 TensorFlowOnSpark 255
18.1 TensorFlowOnSpark的架构 255
18.2 TensorFlowOnSpark在MNIST上的实践 257
18.3 小结 261
第19章 TensorFlow移动端应用 262
19.1 移动端应用原理 262
19.1.1 量化 263
19.1.2 优化矩阵乘法运算 266
19.2 iOS系统实践 266
19.2.1 环境准备 266
19.2.2 编译演示程序并运行 267
19.2.3 自定义模型的编译及运行 269
19.3 Android系统实践 273
19.3.1 环境准备 274
19.3.2 编译演示程序并运行 275
19.3.3 自定义模型的编译及运行 277
19.4 树莓派实践 278
19.5 小结 278
第20章 TensorFlow的其他特性 279
20.1 TensorFlow Serving 279
20.2 TensorFlow Flod 280
20.3 TensorFlow计算加速 281
20.3.1 CPU加速 281
20.3.2 TPU加速和FPGA加速 282
20.4 小结 283
第21章 机器学习的评测体系 284
21.1 人脸识别的性能指标 284
21.2 聊天机器人的性能指标 284
21.3 机器翻译的评价方法 286
21.3.1 BLEU 286
21.3.2 METEOR 287
21.4 常用的通用评价指标 287
21.4.1 ROC和AUC 288
21.4.2 AP和mAP 288
21.5 小结 288
附录A 公开数据集 289
附录B 项目管理经验小谈 292
深度学习是当前人工智能zui核心的技术,TensorFlow是深度学习主要的实现平台。李嘉璇的这本书对TensorFlow的基本原理、主要特性、使用方法以及在TensorFlow上的技术开发做了系统全面的介绍,内容充实,讲解详尽。没有对TensorFlow的深刻理解和丰富的实战经验是写不出这样的好书来的,全书字里行间透出作者对技术的真诚热爱及细致钻研。本书定位恰当,出版及时,相信读者一定会喜欢,强烈推荐给大家!
——李航,华为诺亚方舟实验室主任,北京大学、南京大学客座教授,IEEE会士、ACM杰出科学家
我认为这本书非常适合希望研究深度学习的程序员。他们可以将本书作为一本基础和实践的书籍阅读。对于初学者来说,从TensorFlow入手是很好的起点。TensorFlow有谷歌的强大支持,并且有广泛的社区。读者可以从本书中了解基本的深度学习原理、典型的模型、大量的TensorFlow源代码以及成功的应用范例。从本书出发,读者可以循序渐进,逐步深入,在工作实践中加以运用,领略深度学习的美妙。
——余凯,地平线机器人创始人,前百度深度学习实验室主任
本书从应用的基本案例出发,使用实际的代码介绍TensorFlow的基础知识和各种使用方法。本书也介绍了一些深度学习的基础知识,如CNN、RNN、LSTM,并列出了一些深入研究深度学习的参考文献,是一本很好的从应用出发介绍TensorFlow的读物,非常适合有兴趣学习和使用TensorFlow的广大读者阅读。
——孙亮,《实用机器学习》作者,阿里巴巴数据科学与技术研究院高级专家
不“高来高去”、不“急于求成”、品味独特的TensorFlow深度学习实践指南。全书一气呵成,深入浅出,覆盖全面,实例丰富,是难得的用心佳作。“深度学习”浪潮当前,从“看热闹”到“看门道”路在何方?本书或许能帮你找到一些线索。
——陈光,北京邮电大学模式识别实验室副教授(微博@爱可可-爱生活)
从纯技术的角度来看,深度学习还是有些深奥的,幸亏AI社区有了越来越多的开源平台,使深度学习的应用变得越来越简单,TensorFlow即是其中优秀的平台之一。如何尽快熟悉这个平台,并能在实战中发挥其作用,是众多工程技术人员非常渴望获得的技能。嘉璇的这本书应该是很好的选择!作者基于对TensorFlow的深刻理解和丰富的实战经验,对TensorFlow的原理、特性、使用方法以及应用技巧做了详尽的介绍。特别是结合具体实例进行讲解的方式,有利于读者直观、快速地掌握有关的技能。嘉璇多才多艺,对技术和生活充满热爱和激情,相信这本书会有众多读者喜欢!
——山世光,中科院计算所研究员,中科院智能信息处理重点实验室常务副主任,中科视拓创始人、董事长兼CTO
TensorFlow是目前非常受欢迎的深度学习框架。本书作者在文本分析和数据挖掘方面拥有丰富的经验。通过相关算法的专业知识和对TensorFlow的所有前沿功能的深入解析,作者提供一章章的有用资料来分享实用和有见地的信息。细分为直观的“基础篇”“实战篇”“提高篇”这样的结构,可以帮助读者有效地学习。
——Matt Scott(码特),Malong(码隆科技)CTO
随着机器不断突破智能极限,我们将被卷入超乎想象的AI新时代。TensorFlow是推动人工智能进步zui大的引擎,如果你希望站在机器学习浪潮上成为AI极客,那就从阅读本书开始努力吧!本书详尽地介绍了算法和模型的细节,同时穿插大量的工业界实际例子,清晰地讲解了如何构建深度学习模型,对建立完整的深度学习知识体系大有裨益。
——李卓桓,PreAngel合伙人,机器学习/ChatBot爱好者
深度学习的浪潮汹涌而来,TensorFlow则为广大弄潮儿提供了强大的帆板。对于更多虽没有弄潮经验却跃跃欲试的人,这本书正可以成为他们入海前的第一课。本书涉及图像识别、自然语言处理等多个领域,演示了包括CNN、RNN、GAN在内的多种算法实现,对入门深度学习和TensorFlow是难得的学习材料。
——边江,微软亚洲研究院主管研究员