
本书是一本阅读起来特别轻松、学习一点都不费劲的TensorFlow入门书。本书基于TensorFlow 2.0版本,从机器学习和TensorFlow的基础开始,针对初学者只选择实际应用中的必需最小知识量,对前馈神经网络、卷积神经网络、循环神经网络、深度强化学习进行了浅显易懂且快速有效的阐述,其中包括了很多具体的TensorFlow示例,最后一章的项目实战能够教会初学者使用深度学习解决实际问题,从而进入人工智能这一前沿的热门领域。本书适合初学TensorFlow,并且深度学习的理论和实践基础较为薄弱的读者群体,也适合希望了解深度学习的大数据平台工程师,以及对人智能、深度学习感兴趣的计算机相关从业人员及在校学生等阅读,特别适合作为高等院校计算机或人工智能专业师生的参考教材。
前? 言 TensorFlow 是一个开源的机器学习库,在所有机器学习库中目前是使用最多的。基于TensorFlow 提供的一系列工作流程,我们可以用 Python、JavaScript 或 Swift 等语言来开发和训练模型,并在云端、本地、浏览器中或移动设备上轻松地部署模型。TensorFlow 拥有丰富的开源项目和资料文档,并且有很大的用户群体及社区,从 TensorFlow 2.0 开始,易用性又得到了大幅的提升,因此,无论对于科研还是生产,TensorFlow 都是一个非常不错的选择。 为什么写作本书 在 2019 年 9 月的谷歌开发者大会上,谷歌公司发布了 TensorFlow 2.0 RC 版,TensorFlow 2.0 相对于 1.x 版本来说做了很大的改进,尤其在易用性上。虽然说这种巨大的改进让很多 TensorFlow的老用户感到有点措手不及,但是对于初次接触 TensorFlow 的用户来说,这却是福音,因为TensorFlow 2.0 的入门要比 1.x 容易很多。现有的基于 TensorFlow 1.x 的书籍和教程已经不再适用了,本书的主要目的是让 TensorFlow 的初学者快速地了解和掌握这一工具,并能搭建常用的神经网络模型。 2018 年年初,本书作者就开始在公众号“磐创 AI”上推出一系列的机器学习、深度学习相关的文章。其中,TensorFlow、PyTorch 等多个系列的文章收到了读者好评及建议。本书即基于此而成。 本书的读者对象 本书适合初学 TensorFlow,并且深度学习基础较为薄弱的读者。本书作者从“磐创 AI”公众号的运营经验来看,入门类文章的阅读量较大,说明从基础知识开始学习深度学习的读者基数较大。因此,本书从深度学习的基础知识开始讲起,旨在以原理与实战相结合的方式,带着读者学习和掌握 TensorFlow 2.0。 本书配套的 GitHub 项目地址为 https://github.com/lqhou/TensorFlow2.0-Book。该仓库包含书中所有的代码,以及给读者推荐的参考资料和学习书籍。本书是一本 TensorFlow 入门书,可以让读者快速上手 TensorFlow,并动手实现深度学习的算法。然而,深度学习的知识点很多,也很复杂,大家要想进一步提升,还得在本书的基础上结合其他相关资料和书籍学习。 本书主要内容 本书共 7 章。 第 1 章“机器学习基础”介绍了机器学习相关的基础知识,帮助初学者快速了解相关的方法和概念。本章是学习后续章节内容的基础。 第 2 章“ TensorFlow 基础”介绍了 TensorFlow 2.0 的基础知识和使用方法,包括 TensorFlow CPU 和 GPU 版本的安装、TensorFlow 常见的基本概念,以及常用的高级 API 的使用等。 第 3 章“前馈神经网络”从最简单的神经网络模型讲起,由浅入深地介绍神经网络的结构和计算,介绍了常用的激活函数和损失函数,以及反向传播算法的完整计算过程。 第 4 章“卷积神经网络”介绍了卷积神经网络的基本结构和特征,通过实战项目介绍如何使用 TensorFlow 搭建基本的卷积神经网络模型,解决实际问题。 第 5 章“循环神经网络”首先介绍简单循环神经网络及其常用结构,接着介绍了基于门控制的循环神经网络,以及注意力机制等。 第 6 章“深度强化学习”介绍了强化学习的基本概念和方法,结合代码介绍了三种基本的强化学习算法,最后在此基础上介绍了两种深度强化学习算法。 第 7 章“项目实战”包含了 5 个实战项目:两个 CNN 项目、两个 RNN 项目,以及一个DRL 项目。每个实战项目都详细介绍了从数据预处理到模型训练和使用的完整流程。 答疑和交流 由于作者水平有限,书中难免存在一些错误和不足之处,敬请大家给予批评指正。大家可以访问电子工业出版社的博文视点社区(www.broadview.com. cn),以及专享答疑群(见右侧二维码),在这里给本书提交勘误,与本书作者 交流。 侯伦青 2020 年 1 月
第 1 章 机器学习基础 / 1 1.1 人工智能:是机遇也是挑战 / 2 1.2 机器学习 / 2 1.2.1 什么是机器学习 / 2 1.2.2 用机器学习解决问题的一般流程 / 4 1.2.3 数据预处理 / 6 1.2.4 特征工程 / 7 1.2.5 模型的评估和选择 / 10 1.3 深度学习的发展历程及应用 / 16 1.3.1 深度学习的发展历程 / 16 1.3.2 深度学习的应用 / 18 1.4 本章练习 / 20 第 2 章 TensorFlow 基础 / 21 2.1 TensorFlow 2.0 简介 / 22 2.1.1 TensorFlow 的基本概念 / 22 2.1.2 从 1.x 到 2.0 的变化 / 25 2.1.3 TensorFlow 2.0 的架构 / 26 2.2 TensorFlow 2.0 的安装 / 27 2.3 TensorFlow 2.0 的使用 / 33 2.3.1 “tf.data”API / 33 2.3.2 “tf.keras”API / 40 2.4 使用 GPU 加速 / 47 2.4.1 安装配置 GPU 环境 / 47 2.4.2 使用 TensorFlow-GPU / 53 2.5 本章小结 / 55 第 3 章 前馈神经网络 / 56 3.1 神经网络 / 57 3.1.1 感知器模型 / 57 3.1.2 多层神经网络 / 58 3.2 激活函数 / 61 3.2.1 Logistic 函数 / 61 3.2.2 Tanh 函数 / 61 3.2.3 ReLU 函数 / 62 3.3 损失函数和输出单元 / 63 3.3.1 损失函数的选择 / 63 3.3.2 输出单元的选择 / 64 3.4 小试牛刀:MNIST 手写数字识别 / 65 3.4.1 MNIST 数据集 / 66 3.4.2 数据处理 / 67 3.4.3 简单前馈神经网络的实现 / 70 3.5 本章小结 / 72 3.6 本章练习 / 72 第 4 章 卷积神经网络 / 73 4.1 卷积神经网络的基本特征与 基本结构 / 74 4.2 卷积层 / 76 4.2.1 什么是卷积 / 76 4.2.2 滑动步长和零填充 / 79 4.2.3 卷积层的基本结构 / 81 4.3 池化层 / 83 4.4 小试牛刀: CNN 实现图像分类 / 84 4.5 本章小结 / 92 4.6 本章练习 / 92 第 5 章 循环神经网络 / 93 5.1 简单循环神经网络 / 94 5.1.1 循环神经网络的基本 结构 / 95 5.1.2 循环神经网络的运算过程和 参数更新 / 96 5.2 常用循环神经网络 / 100 5.2.1 多层循环神经网络 / 101 5.2.2 双向循环神经网络 / 101 5.2.3 TensorFlow 实现循环神经 网络 / 102 5.3 长期依赖问题及其优化 / 107 5.4 门控循环神经网络 / 110 5.4.1 长短期记忆网络 / 110 5.4.2 门控循环单元 / 114 5.4.3 TensorFlow 实现 LSTM 和 GRU / 115 5.5 循环神经网络的应用 / 116 5.5.1 文本分类 / 116 5.5.2 序列标注 / 117 5.5.3 机器翻译 / 118 5.6 注意力模型 / 119 5.7 本章小结 / 121 5.8 本章练习 / 121 第 6 章 深度强化学习 / 122 6.1 从 AlphaGo 看深度强化学习 / 123 6.2 强化学习基础知识 / 126 6.2.1 强化学习问题 / 126 6.2.2 马尔可夫决策过程 / 128 6.2.3 最优价值函数和贝尔曼 方程 / 130 6.3 有模型的强化学习方法 / 131 6.3.1 价值迭代 / 132 6.3.2 策略迭代 / 132 6.4 无模型的强化学习方法 / 133 6.4.1 蒙特卡罗方法 / 133 6.4.2 时序差分学习 / 136 6.4.3 值函数近似 / 139 6.4.4 策略搜索 / 139 6.5 强化学习算法 / 141 6.5.1 Q-Learning 算法 / 141 6.5.2 Monte Carlo Policy Gradient 算法 / 146 6.5.3 Actor-Critic 算法 / 150 6.6 深度强化学习算法 / 154 6.6.1 Deep Q-Networks(DQN) / 154 6.6.2 Deep Deterministic Policy Gradient(DDPG) / 156 6.7 本章小结 / 157 6.8 本章练习 / 157 第 7 章 项目实战 / 158 7.1 CNN 实战项目一:Chars74K / 158 7.2 CNN 实战项目二:CIFAR-10 / 166 7.3 RNN实战项目一:新闻文本分类 / 174 7.4 RNN 实战项目二:聊天机器人 / 180 7.5 DRL 实战项目:DQN / 189