TensorFlow深度学习应用开发实战

TensorFlow深度学习应用开发实战"

作者:谷瑞、陈强、谭冠兰
ISBN:9787302549826
定价:¥48
字数:千字
页数:
出版时间:2020.07.01
开本:
版次:1-1
装帧:
出版社:清华大学出版社
简介

随着人工智能技术的发展,深度学习成为最受关注的领域之一。在深度学习的诸多开发框架中,

TensorFlow 是最受欢迎的开发框架。

    本书以培养人工智能编程思维和技能为核心,以工作过程为导向,采用任务驱动的方式组织内容。全

书共分为8 个任务,任务1 介绍深度学习的发展历程、应用领域以及开发环境的搭建过程;任务2 介绍

TensorFlow 框架的基本原理、计算图、会话、张量等概念;任务3 和任务4 阐述全连接神经网络模型、神

经网络优化方法及反向传播算法;任务5 和任务6 讨论卷积神经网络、卷积、池化的原理;任务7 和任务8

演示网络模型可视化操作步骤及制作与解析数据集的方法。

         本书既可作为大数据、人工智能等相关专业应用型人才的教学用书,也可以作为TensorFlow 初学者的

学习参考书。

前言

前 言

随着人工智能技术的发展,深度学习成为广受关注的领域。面向深度学习的开发框架不断涌现,但毫无疑问,TensorFlow 是其中最受欢迎的一款开源框架。

本书以培养读者的人工智能编程思维和技能为核心,以工作过程为导向,采用项目驱动的方式组织内容。具体来说,本书的编写思路和特色如下。

(1)在内容设计上,坚持由浅入深。

本书以PyCharm 和TensorFlow 1.10 为平台,介绍了深度学习的概念及其应用领域、TensorFlow 的语言基础、构建二维线性拟合模型、可视化模型、全连接网络构建手写字模型以及AlexNet 网络模型,最后讲到了模型的微调。由浅入深,层层递进,使读者一步步掌握深度学习的原理和技巧。

(2)在内容编排上,坚持以实践、应用为导向。

学习深度学习,需要有深厚的数理基础,这对初学者来说有一定的难度。本书从实践和应用出发,淡化理论,通过大量具体的例子来引导读者学习TensorFlow 编程技巧。

在实践内容的选择上,则尽可能从实用性和趣味性两方面进行考量,选择MNIST 图像识别的入门项目以及AlexNet 图像识别项目,使读者在实践中逐渐加深领悟,并最终掌握深

度学习的开发技巧。

(3)在具体知识点介绍上,尽量做到清晰而有深度。

编写过程中,尽量用简单的语言描述算法原理,做到条理清晰。

本书各章节的内容安排如下。

任务1:主要介绍人工智能的发展历程、人工智能与深度学习、人工智能与计算机视觉、人工智能与自然语言处理的关系以及TensorFlow 深度学习开发环境的搭建过程。

任务2:介绍深度学习的基本概念,使读者通过计算图、会话、数据喂入、模型的保存与恢复等理解深度学习模型。

任务3:阐述全连接神经网络模型架构、网络模型的优化方法、学习率、损失函数、向后传播等基本概念。

任务4:以MNIST 手写字模型为基础,介绍数据集的下载方法、标签转换为one-hot、图像转换为矩阵等展示;然后搭建全连接神经网络训练手写字模型;最后检验该模型的正确性。

任务5:讨论卷积神经网络模型。首先介绍传统的全连接神经网络模型的权限,以及卷积神经网络的网络结构;然后讲解卷积、池化以及特征提取、多通道、多卷积核卷积的概念;最后以LeNet-5 模型为基础,搭建手写字模型,提高网络训练的准确率。

任务6:以AlexNet 卷积神经网络模型为基础,构建物体识别模型。首先介绍CIFAR-10 数据集的特性、数据集的下载方法以及数据集图片和标签的展示;然后阐述如何通过数据增强的方式扩大数据集,从而增强模型的泛化性;最后通过构建网络模型,

识别不同种类的物体。

任务7:以TensorBoard 为基础,展示了神经网络的可视化方法。首先介绍Tensor-Board 可视化环境的搭建与配置过程;然后介绍标量、计算图、分布图等不同元素可视化的方法;最后通过可视化性别识别模型,使读者理解神经网络的训练过程。

任务8:阐述TensorFlow 最新的数据处理框架。首先介绍tf.data 数据处理框架的基本机制、迭代器的基本概念;然后讲解数据集的构建与解析过程;最后介绍数据批处理的基本机制。

本书由谷瑞、陈强、谭冠兰主笔编写。参与本书编写的人员还有罗颖、淡海英、盛雪丰、李露、王玉丽、徐迎春、茹新宇、胡海明、马千里等。

在本书的编写过程中,苏永新、谭传艺、文逸、沈杨怡等同学提供了大量帮助,为本书的编写搜集了大量案例。江苏千森信息科技有限公司提供了力所能及的帮助。正是有了他们专心细致的工作,才使得本书的内容更加丰富。在此,对他们表示深深的

感谢。

虽然在编写过程中,对书中所述内容已尽量核实、修正,并多次进行了文字校对,但因时间仓促,水平有限,书中的疏漏和错误之处在所难免,敬请广大读者批评指正。

谷 瑞

2020 年4 月

目录

任务1 深度学习简介与开发环境搭建???????????????????????????????????????????????????????????????????????????? 1

1.1 深度学习的发展及应用???????????????????????????????????????????????????????????????????????????????????????????? 1

1.1.1 深度学习的发展历程????????????????????????????????????????????????????????????????????????????????????? 1

1.1.2 深度学习的应用领域????????????????????????????????????????????????????????????????????????????????????? 4

1.2 深度学习框架简介???????????????????????????????????????????????????????????????????????????????????????????????????? 7

1.2.1 TensorFlow ????????????????????????????????????????????????????????????????????????????????????????????????????? 7

1.2.2 Caffe ??????????????????????????????????????????????????????????????????????????????????????????????????????????????? 8

1.2.3 PyTorch??????????????????????????????????????????????????????????????????????????????????????????????????????????? 8

1.2.4 MXNet ???????????????????????????????????????????????????????????????????????????????????????????????????????????? 8

1.2.5 不同框架的对比????????????????????????????????????????????????????????????????????????????????????????????? 9

1.3 开发环境搭建???????????????????????????????????????????????????????????????????????????????????????????????????????????? 9

1.3.1 Windows 环境下的安装配置????????????????????????????????????????????????????????????????????????? 9

1.3.2 Linux 环境下的安装配置??????????????????????????????????????????????????????????????????????????????20

1.4 本章小结??????????????????????????????????????????????????????????????????????????????????????????????????????????????????25

1.5 本章习题??????????????????????????????????????????????????????????????????????????????????????????????????????????????????26

任务2 构建二维数据拟合模型????????????????????????????????????????????????????????????????????????????????????? 28

2.1 TensorFlow 运行机制???????????????????????????????????????????????????????????????????????????????????????????????28

2.1.1 TensorFlow 系统架构????????????????????????????????????????????????????????????????????????????????????29

2.1.2 构建计算图???????????????????????????????????????????????????????????????????????????????????????????????????30

2.1.3 在会话中运行计算图????????????????????????????????????????????????????????????????????????????????????31

2.1.4 指定GPU 设备??????????????????????????????????????????????????????????????????????????????????????????????34

2.2 TensorFlow 数据模型???????????????????????????????????????????????????????????????????????????????????????????????35

2.2.1 张量及属性???????????????????????????????????????????????????????????????????????????????????????????????????35

2.2.2 类型转换???????????????????????????????????????????????????????????????????????????????????????????????????????38

2.2.3 形状变换???????????????????????????????????????????????????????????????????????????????????????????????????????39

2.3 变量的定义与使用???????????????????????????????????????????????????????????????????????????????????????????????????40

2.3.1 变量的定义与初始化????????????????????????????????????????????????????????????????????????????????????40

2.3.2 随机初始化变量????????????????????????????????????????????????????????????????????????????????????????????41

2.3.3 获取变量???????????????????????????????????????????????????????????????????????????????????????????????????????42

2.3.4 共享变量???????????????????????????????????????????????????????????????????????????????????????????????????????43

2.4 占位符与数据喂入机制???????????????????????????????????????????????????????????????????????????????????????????44

2.4.1 占位符定义???????????????????????????????????????????????????????????????????????????????????????????????????44

2.4.2 数据喂入???????????????????????????????????????????????????????????????????????????????????????????????????????45

2.5 模型的保存与恢复???????????????????????????????????????????????????????????????????????????????????????????????????45

2.5.1 模型保存???????????????????????????????????????????????????????????????????????????????????????????????????????45

2.5.2 模型恢复???????????????????????????????????????????????????????????????????????????????????????????????????????47

2.6 构建二维数据拟合模型???????????????????????????????????????????????????????????????????????????????????????????48

2.6.1 准备数据???????????????????????????????????????????????????????????????????????????????????????????????????????48

2.6.2 搭建模型???????????????????????????????????????????????????????????????????????????????????????????????????????49

2.6.3 反向传播???????????????????????????????????????????????????????????????????????????????????????????????????????49

2.6.4 迭代训练???????????????????????????????????????????????????????????????????????????????????????????????????????50

2.6.5 使用模型???????????????????????????????????????????????????????????????????????????????????????????????????????51

2.7 本章小结??????????????????????????????????????????????????????????????????????????????????????????????????????????????????51

2.8 本章习题??????????????????????????????????????????????????????????????????????????????????????????????????????????????????52

任务3 构建泰坦尼克号生还率模型????????????????????????????????????????????????????????????????????????????? 55

3.1 M-P 神经元拟合原理???????????????????????????????????????????????????????????????????????????????????????????????55

3.1.1 M-P 神经元模型????????????????????????????????????????????????????????????????????????????????????????????55

3.1.2 训练神经元???????????????????????????????????????????????????????????????????????????????????????????????????58

3.2 激活函数实现神经元非线化???????????????????????????????????????????????????????????????????????????????????59

3.2.1 激活函数的作用????????????????????????????????????????????????????????????????????????????????????????????59

3.2.2 Sigmoid 激活函数?????????????????????????????????????????????????????????????????????????????????????????59

3.2.3 Tanh 激活函数???????????????????????????????????????????????????????????????????????????????????????????????61

3.2.4 Relu 激活函数???????????????????????????????????????????????????????????????????????????????????????????????62

3.3 BP 神经网络模型?????????????????????????????????????????????????????????????????????????????????????????????????????63

3.3.1 BP 神经网络结构??????????????????????????????????????????????????????????????????????????????????????????64

3.3.2 神经网络向前传输推导????????????????????????????????????????????????????????????????????????????????65

3.3.3 神经网络向前传输实践????????????????????????????????????????????????????????????????????????????????67

3.3.4 构建BP 神经网络模型?????????????????????????????????????????????????????????????????????????????????68

3.4 损失函数调整误差???????????????????????????????????????????????????????????????????????????????????????????????????71

3.4.1 交叉熵损失函数????????????????????????????????????????????????????????????????????????????????????????????71

3.4.2 均方误差损失函数????????????????????????????????????????????????????????????????????????????????????????72

3.5 梯度下降??????????????????????????????????????????????????????????????????????????????????????????????????????????????????72

3.5.1 梯度下降的作用及常用方法????????????????????????????????????????????????????????????????????????72

3.5.2 梯度下降使模型最小偏差实践????????????????????????????????????????????????????????????????????74

3.6 模型优化??????????????????????????????????????????????????????????????????????????????????????????????????????????????????75

3.6.1 学习率控制参数更新速度????????????????????????????????????????????????????????????????????????????75

3.6.2 正则化减少过拟合现象????????????????????????????????????????????????????????????????????????????????76

3.7 构建泰坦尼克号生还率模型???????????????????????????????????????????????????????????????????????????????????80

3.7.1 数据读取及预处理????????????????????????????????????????????????????????????????????????????????????????80

3.7.2 搭建向前传输过程????????????????????????????????????????????????????????????????????????????????????????82

3.7.3 迭代训练???????????????????????????????????????????????????????????????????????????????????????????????????????82

3.8 本章小结??????????????????????????????????????????????????????????????????????????????????????????????????????????????????83

3.9 本章习题??????????????????????????????????????????????????????????????????????????????????????????????????????????????????83

任务4 构建手写字识别模型???????????????????????????????????????????????????????????????????????????????????????? 86

4.1 MNIST 数据集?????????????????????????????????????????????????????????????????????????????????????????????????????????86

4.1.1 MNIST 数据集简介???????????????????????????????????????????????????????????????????????????????????????86

4.1.2 下载MNIST 数据集??????????????????????????????????????????????????????????????????????????????????????88

4.1.3 图像的矩阵表示????????????????????????????????????????????????????????????????????????????????????????????89

4.1.4 标签的独热表示????????????????????????????????????????????????????????????????????????????????????????????90

4.2 构建识别MNIST 模型?????????????????????????????????????????????????????????????????????????????????????????????91

4.2.1 MNIST 手写字模型简介???????????????????????????????????????????????????????????????????????????????91

4.2.2 定义模型节点参数????????????????????????????????????????????????????????????????????????????????????????92

4.2.3 网络向前传输过程????????????????????????????????????????????????????????????????????????????????????????93

4.2.4 网络参数优化????????????????????????????????????????????????????????????????????????????????????????????????94

4.2.5 训练并保存模型????????????????????????????????????????????????????????????????????????????????????????????95

4.3 模型验证??????????????????????????????????????????????????????????????????????????????????????????????????????????????????96

4.3.1 验证集验证模型????????????????????????????????????????????????????????????????????????????????????????????96

4.3.2 识别自定义图片????????????????????????????????????????????????????????????????????????????????????????????97

4.4 本章小结???????????????????????????????????????????????????????????????????????????????????????????????????????????????? 100

4.5 本章习题???????????????????????????????????????????????????????????????????????????????????????????????????????????????? 100

任务5 LeNet-5 模型识别手写字???????????????????????????????????????????????????????????????????????????????? 102

5.1 卷积神经网络结构特征????????????????????????????????????????????????????????????????????????????????????????? 102

5.1.1 卷积神经网络简介?????????????????????????????????????????????????????????????????????????????????????? 102

5.1.2 卷积物理含义?????????????????????????????????????????????????????????????????????????????????????????????? 104

5.1.3 网络结构特征?????????????????????????????????????????????????????????????????????????????????????????????? 106

5.2 卷积神经网络函数????????????????????????????????????????????????????????????????????????????????????????????????? 108

5.2.1 卷积操作????????????????????????????????????????????????????????????????????????????????????????????????????? 108

5.2.2 池化操作????????????????????????????????????????????????????????????????????????????????????????????????????? 112

5.2.3 DropOut 机制??????????????????????????????????????????????????????????????????????????????????????????????? 116

5.3 卷积高级操作????????????????????????????????????????????????????????????????????????????????????????????????????????? 118

5.3.1 多通道卷积????????????????????????????????????????????????????????????????????????????????????????????????? 118

5.3.2 多卷积核????????????????????????????????????????????????????????????????????????????????????????????????????? 120

5.3.3 反卷积????????????????????????????????????????????????????????????????????????????????????????????????????????? 122

5.4 LeNet-5 识别手写字??????????????????????????????????????????????????????????????????????????????????????????????? 124

5.4.1 LeNet-5 模型简介???????????????????????????????????????????????????????????????????????????????????????? 124

5.4.2 构建向前传输模型?????????????????????????????????????????????????????????????????????????????????????? 125

5.4.3 优化模型????????????????????????????????????????????????????????????????????????????????????????????????????? 128

5.4.4 训练保存模型?????????????????????????????????????????????????????????????????????????????????????????????? 130

5.4.5 验证模型????????????????????????????????????????????????????????????????????????????????????????????????????? 131

5.5 本章小结???????????????????????????????????????????????????????????????????????????????????????????????????????????????? 132

5.6 本章习题???????????????????????????????????????????????????????????????????????????????????????????????????????????????? 133

任务6 打造CIFAR-10 图像识别模型???????????????????????????????????????????????????????????????????????? 136

6.1 CIFAR-10 数据集简介??????????????????????????????????????????????????????????????????????????????????????????? 136

6.1.1 CIFAR-10 数据集简介???????????????????????????????????????????????????????????????????????????????? 136

6.1.2 下载CIFAR-10 数据集??????????????????????????????????????????????????????????????????????????????? 137

6.2 读取CIFAR-10 数据?????????????????????????????????????????????????????????????????????????????????????????????? 138

6.2.1 读取并显示图片?????????????????????????????????????????????????????????????????????????????????????????? 138

6.2.2 将标签表示成独热?????????????????????????????????????????????????????????????????????????????????????? 139

6.3 数据增强???????????????????????????????????????????????????????????????????????????????????????????????????????????????? 140

6.3.1 图像几何变换?????????????????????????????????????????????????????????????????????????????????????????????? 140

6.3.2 图像色彩调整?????????????????????????????????????????????????????????????????????????????????????????????? 144

6.3.3 图像的标准化?????????????????????????????????????????????????????????????????????????????????????????????? 146

6.3.4 图像标注????????????????????????????????????????????????????????????????????????????????????????????????????? 147

6.4 构建CIFAR-10 图像识别模型?????????????????????????????????????????????????????????????????????????????? 149

6.4.1 数据批量读取?????????????????????????????????????????????????????????????????????????????????????????????? 149

6.4.2 模型构建????????????????????????????????????????????????????????????????????????????????????????????????????? 150

6.4.3 训练并预测????????????????????????????????????????????????????????????????????????????????????????????????? 154

6.5 ImageNet 图像识别模型????????????????????????????????????????????????????????????????????????????????????????? 155

6.5.1 ImageNet 数据集简介????????????????????????????????????????????????????????????????????????????????? 155

6.5.2 历代ImageNet 识别模型???????????????????????????????????????????????????????????????????????????? 156

6.6 本章小结???????????????????????????????????????????????????????????????????????????????????????????????????????????????? 158

6.7 本章习题???????????????????????????????????????????????????????????????????????????????????????????????????????????????? 158

任务7 可视化性别识别模型?????????????????????????????????????????????????????????????????????????????????????? 160

7.1 在程序中使用TensorBoard ??????????????????????????????????????????????????????????????????????????????????? 160

7.1.1 TensorBoard 基本介绍???????????????????????????????????????????????????????????????????????????????? 160

7.1.2 TensorBoard 使用步骤???????????????????????????????????????????????????????????????????????????????? 161

7.2 TensorBoard 可视化??????????????????????????????????????????????????????????????????????????????????????????????? 163

7.2.1 标量与直方图可视化?????????????????????????????????????????????????????????????????????????????????? 163

7.2.2 卷积过程可视化?????????????????????????????????????????????????????????????????????????????????????????? 167

7.2.3 训练过程可视化?????????????????????????????????????????????????????????????????????????????????????????? 171

7.3 可视化性别识别模型????????????????????????????????????????????????????????????????????????????????????????????? 174

7.3.1 模型简介????????????????????????????????????????????????????????????????????????????????????????????????????? 174

7.3.2 读取数据集????????????????????????????????????????????????????????????????????????????????????????????????? 175

7.3.3 训练模型????????????????????????????????????????????????????????????????????????????????????????????????????? 176

7.3.4 可视化模型????????????????????????????????????????????????????????????????????????????????????????????????? 179

7.4 本章小结???????????????????????????????????????????????????????????????????????????????????????????????????????????????? 180

7.5 本章习题???????????????????????????????????????????????????????????????????????????????????????????????????????????????? 180

任务8 理解tf.data 数据处理框架?????????????????????????????????????????????????????????????????????????????? 182

8.1 Dataset 的基本机制???????????????????????????????????????????????????????????????????????????????????????????????? 182

8.1.1 Dataset 数据处理框架????????????????????????????????????????????????????????????????????????????????? 182

8.1.2 创建Dataset ???????????????????????????????????????????????????????????????????????????????????????????????? 183

8.2 Iterator 迭代数据集???????????????????????????????????????????????????????????????????????????????????????????????? 184

8.2.1 单次迭代器????????????????????????????????????????????????????????????????????????????????????????????????? 184

8.2.2 可初始化迭代器?????????????????????????????????????????????????????????????????????????????????????????? 185

8.2.3 可重新初始化迭代器?????????????????????????????????????????????????????????????????????????????????? 186

8.2.4 可馈送迭代器?????????????????????????????????????????????????????????????????????????????????????????????? 187

8.3 Dataset 数据批处理???????????????????????????????????????????????????????????????????????????????????????????????? 188

8.3.1 直接批处理????????????????????????????????????????????????????????????????????????????????????????????????? 188

8.3.2 预处理后批处理?????????????????????????????????????????????????????????????????????????????????????????? 189

8.4 Dataset 数据集构建与解析???????????????????????????????????????????????????????????????????????????????????? 190

8.4.1 数据集预处理?????????????????????????????????????????????????????????????????????????????????????????????? 190

8.4.2 构建TFRecordDataset 数据集???????????????????????????????????????????????????????????????????? 191

8.4.3 从tf.train.Example 中解析数据??????????????????????????????????????????????????????????????????? 192

8.5 本章小结???????????????????????????????????????????????????????????????????????????????????????????????????????????????? 193

8.6 本章习题???????????????????????????????????????????????????????????????????????????????????????????????????????????????? 194

附录人工智能数学基础????????????????????????????????????????????????????????????????????????? 196

作者简介

编辑推荐

以培养人工智能编程思维和技能为核心,采用任务驱动的方式组织内容。学习深度学习,需要有深厚的数学基础,这对初学者来说有一定难度。本书从实践和应用出发,淡化理论,通过大量具体的例子来引导读者学习TensorFlow编程技巧。本书在附录有人工智能数学基础,方便初学者和高职院校的学生随时查阅所需数学公式。

作者寄语

谷瑞,副教授、苏州工业园区服务外包职业学院大数据技术与应用专业主任,苏州大学高级访问学者,英伟达计算机视觉与自然语言处理认证讲师,以第一作者发表SCI、EI检索论文5篇、主持省十三五教育科学规划课题1项、参与企业横向项目20余项,具有丰富的项目实战经验。

电子资料

www.luweidong.cn

下一个