编辑推荐
- 领导“谷歌大脑”的工程师Jeff Dean发来寄语- 李航、余凯等人工智能领域专家倾力推荐- 基于TensorFlow 1.1,包揽TensorFlow的新特性- 技术内容全面,实战案例丰富,视野广阔- 人脸识别、语音识别、图像和语音相结合等热点一应俱全TensorFlow是深度学习的zui流行的框架之一,极适合新手入门。谷歌公司正致力于建立一个相关软件和机器学习模型的开源生态系统,这是人工智能发展的技术风口。本书基于TensorFlow1.1版本,深入TensorFlow基础原理、设计理念、编程模型、源码分析和模型构建、工业界应用、大规模数据训练等。全书分为基础篇、实战篇和提高篇三部分。“基础篇”·人工智能入门,学习深度学习的方法。·TensorFlow基础原理、设计架构和编程模型。·常用API、批标准化、模型的存储与加载、队列及线程、实现一个自定义OP。·TensorBorad可视化的全面解析。·源码分析。·神经网络(CNN和RNN)的发展演化以及如何用TensorFlow实现这些网络。·第三方上层框架Keras和TFLearn的应用。“实战篇”·用TensorFlow实现第1个神经网络。·用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和自编码网络等),并对MINIST数据集进行训练,讲解TensorFlow在人脸识别、自然语言处理、图像和语音的结合、生成式对抗网络等方面的应用;提高篇讲解TensorFlow的分布式原理、架构、模式、API,还会介绍TensorFlow XLA、TensorFlow Debugger、TensorFlow和Kubernetes结合、TensorFlowOnSpark、TensorFlow移动端应用,以及TensorFlow Serving、TensorFlow Fold和TensorFlow计算加速等其他特性。zui后,附录中列出一些可供参考的公开数据集,并结合作者的项目经验介绍项目管理的一些建议。 本书深入浅出,理论联系实际,实战案例新颖,基于zui新的TensorFlow 1.1版本,涵盖TensorFlow的新特性,非常适合对深度学习和TensorFlow感兴趣的读者阅读。
作者简介
李嘉璇,创建TensorFlow交流社区(tf.greatgeekgrace.com),活跃于国内各大技术社区,知乎编程问题回答者。致力于人工智能的研究,对深度学习框架的架构、源码分析及在不同领域的应用有浓厚兴趣。有过上百篇论文阅读和深度学习经验,处理图像、社交文本数据情感分析、数据挖掘经验,参与过基于深度学习的自动驾驶二维感知系统Hackathon竞赛,曾任职百度研发工程师。
目录
- 第一篇 基础篇
- 第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