本书采用“理论 +实践”的方式,全面系统地讲授了深度学习的基本原理以及使用 TensorFlow实现各类深度学习网络的方法。全书共 10章,第 1~3章主要介绍深度学习的基础知识,包括深度学习的概念和应用、深层神经网络的训练和优化、 TensorFlow的内涵和特点等内容;第 4~5章主要介绍 TensorFlow的安装,以及计算模型、数据模型、运行模型等 TensorFlow编程的基础知识;第 6~10章主要围绕 TensorFlow介绍各类深度学习网络,包括单个神经元、多层神经网络、卷积神经网络、循环神经网络、深度学习网络进阶等。全书在各个章节设置有大量的实验和实操案例,兼具知识性和实用性。
闭应洲,南宁师范大学教授,主要研究方向为智能计算、智能医学图像处理及社会计算。主持和参与了10多项科研项目的研究工作,发布论文50多篇。2012年2月至2013年2月在美国亚利桑那州立大学访学,重点研究从海量数据中获取知识所必需的理论和技术。
目 录
第 1章引言····················································································································1
1.1 人工智能简介······································································································1
1.2 机器学习简介······································································································2
1.2.1 机器学习的概念·····························································································2
1.2.2 机器学习的本质·····························································································2
1.2.3 机器学习的步骤·····························································································3
1.2.4 机器学习的关键点··························································································5
1.2.5 机器学习的实战·····························································································6
1.2.6 机器学习的教材·····························································································7
1.3 机器学习的分类 ··································································································8
1.3.1 有监督学习···································································································8
1.3.2 无监督学习···································································································9
1.3.3 半监督学习································································································.10
1.3.4 强化学习···································································································.11
1.4 本章小结··········································································································.12
第 2章深度学习的原理 ·······························································································.13
2.1 深度学习简介···································································································.13
2.1.1 深度学习的概念··························································································.13
2.1.2 深度学习的特点··························································································.13
2.2 深度学习的现实意义 ························································································.14
2.2.1 多层神经网络的模型结构 ··············································································.14
2.2.2 非线性处理能力··························································································.14
2.2.3 特征自动提取和转换····················································································.16
2.3 深度学习的应用领域 ························································································.16
2.3.1 计算机视觉································································································.17
2.3.2 自然语言处理·····························································································.20
2.3.3 语音识别···································································································.21
2.4 深层神经网络简介····························································································.22
2.4.1 神经元模型································································································.22
2.4.2 单层神经网络·····························································································.23
2.4.3 深层神经网络·····························································································.24
2.4.4 深层神经网络节点·······················································································.24
2.4.5 深层神经网络参数·······················································································.25
2.4.6 节点输出值计算··························································································.25
2.5 深层神经网络的训练与优化 ··············································································.26
2.5.1 深层神经网络的训练····················································································.26
2.5.2 深层神经网络的优化····················································································.32
2.6 本章小结··········································································································.35
第 3章深度学习框架简介 ····························································································.37
3.1 TensorFlow简介 ·······························································································.37
3.2 TensorFlow的特点····························································································.38
3.3 其他深度学习框架····························································································.38
3.4 本章小结··········································································································.41
第 4章 TensorFlow的安装···························································································.42
4.1 安装准备··········································································································.42
4.1.1 硬件检查···································································································.42
4.1.2 处理器推荐—GPU····················································································.44
4.1.3 系统选择—Linux ·····················································································.53
4.1.4 配合 Python语言使用···················································································.53
4.1.5 Anaconda的安装·························································································.54
4.2 TensorFlow的主要依赖包 ·················································································.55
4.2.1 Protocol Buffer····························································································.56
4.2.2 Bazel········································································································.57
4.3 Python安装 TensorFlow·····················································································.59
4.3.1 使用 pip安装 ·····························································································.59
4.3.2 从源代码编译并安装····················································································.59
4.4 TensorFlow的使用····························································································.60
4.4.1 向量求和···································································································.60
4.4.2 加载过程的问题··························································································.61
4.5 推荐使用 IDE ···································································································.61
4.6 本章小结··········································································································.62
第 5章 TensorFlow编程基础 ·······················································································.63
5.1 计算图与张量···································································································.63
5.1.1 初识计算图与张量·······················································································.63
5.1.2 TensorFlow的计算模型—计算图··································································.63
5.1.3 TensorFlow的数据模型—张量·····································································.66
5.2 TensorFlow的运行模型 —会话 ·······································································.68
5.2.1 TensorFlow的系统结构 ················································································.68
5.2.2 会话的使用································································································.69
5.2.3 使用 with/as进行上下文管理 ·········································································.70
5.2.4 会话的配置································································································.71
5.2.5 占位符······································································································.72
5.3 TensorFlow变量 ·······························································································.73
5.3.1 变量的创建································································································.73
5.3.2 变量与张量································································································.76
·VI.
5.3.3 管理变量空间·····························································································.77
5.4 实验:识别图中模糊的手写数字 ·······································································.82
5.5 本章小结··········································································································.88
第 6章单个神经元 ······································································································.89
6.1 神经元拟合原理 ·······························································································.89
6.1.1 正向传播···································································································.90
6.1.2 反向传播···································································································.90
6.2 激活函数··········································································································.91
6.2.1 Sigmoid函数······························································································.91
6.2.2 Tanh函数··································································································.92
6.2.3 ReLU函数 ································································································.93
6.2.4 Swish函数 ································································································.96
6.3 Softmax算法与损失函数 ···················································································.96
6.3.1 Softmax算法······························································································.97
6.3.2 损失函数···································································································.98
6.3.3 综合应用实验·····························································································101
6.4 梯度下降··········································································································104
6.4.1 梯度下降方法·····························································································105
6.4.2 梯度下降函数·····························································································105
6.4.3 退化学习率································································································106
6.5 学习参数初始化 ·······························································································108
6.6 使用 Maxout网络扩展单个神经元 ·····································································109
6.6.1 Maxout简介 ······························································································109
6.6.2 使用 Maxout网络实现 MNIST分类 ·································································110
6.7 本章小结··········································································································111
第 7章多层神经网络 ···································································································112
7.1 线性问题与非线性问题 ·····················································································112
7.1.1 用线性逻辑回归处理二分类问题 ·····································································112
7.1.2 用线性逻辑回归处理多分类问题 ·····································································116
7.1.3 非线性问题浅析··························································································121
7.2 解决非线性问题 ·······························································································121
7.2.1 使用带隐藏层的神经网络拟合异或操作 ····························································121
7.2.2 非线性网络的可视化····················································································123
7.3 利用全连接神经网络将图片进行分类 ································································125
7.4 全连接神经网络模型的优化方法 ·······································································127
7.4.1 利用异或数据集演示过拟合问题 ·····································································127
7.4.2 通过正则化改善过拟合情况 ···········································································132
7.4.3 通过增大数据集改善过拟合 ···········································································134
7.4.4 基于 Dropout技术来拟合异或数据集 ·······························································135
7.4.5 全连接神经网络的深浅关系 ···········································································138
7.5 本章小结··········································································································139
第 8章卷积神经网络 ···································································································140
8.1 认识卷积神经网络····························································································140
8.1.1 全连接神经网络的局限性 ··············································································140
8.1.2 卷积神经网络简介·······················································································140
8.2 卷积神经网络的结构 ························································································141
8.2.1 网络结构简介·····························································································141
8.2.2 卷积层······································································································144
8.2.3 池化层······································································································147
8.3 卷积神经网络的相关函数 ·················································································147
8.3.1 卷积函数 tf.nn.conv2d···················································································147
8.3.2 池化函数 tf.nn.max_pool和 tf.nn.avg_pool··························································154
8.4 使用卷积神经网络对图片分类 ··········································································157
8.4.1 CIFAR数据集介绍及使用 ·············································································157
8.4.2 CIFAR数据集的处理 ···················································································160
8.4.3 建立一个卷积神经网络 ·················································································166
8.5 反卷积神经网络 ·······························································································168
8.5.1 反卷积计算································································································169
8.5.2 反池化计算································································································171
8.5.3 反卷积神经网络的应用 ·················································································171
8.6 卷积神经网络进阶····························································································171
8.6.1 函数封装库的使用·······················································································172
8.6.2 深度学习的模型训练技巧 ··············································································174
8.7 本章小结··········································································································182
第 9章循环神经网络 ···································································································183
9.1 循环神经网络的原理 ························································································183
9.1.1 循环神经网络的基本结构 ··············································································183
9.1.2 RNN的反向传播过程 ···················································································184
9.1.3 搭建简单 RNN····························································································186
9.2 改进的 RNN ·····································································································192
9.2.1 LSTM·······································································································193
9.2.2 改进的 LSTM ·····························································································196
9.2.3 Bi-RNN ····································································································198
9.2.4 CTC·········································································································200
9.3 RNN实战·········································································································200
9.3.1 cell类 ······································································································200
9.3.2 构建 RNN··································································································201
9.3.3 使用 RNN对 MNIST数据集分类 ····································································207
9.3.4 RNN的初始化 ····························································································213
9.3.5 RNN的优化 ·······························································································213
·VIII.
9.3.6 利用 BiRNN实现语音识别 ············································································214
9.4 本章小结··········································································································228
第 10章深度学习网络进阶 ··························································································229
10.1深层神经网络 ·································································································229
10.1.1 深层神经网络介绍 ·····················································································229
10.1.2 GoogLeNet模型 ························································································230
10.1.3 ResNet模型 ·····························································································234
10.1.4 Inception-ResNet-v2模型 ·············································································235
10.1.5 TensorFlow中图片分类模型库 —slim ···························································235
10.1.6 slim深度网络模型实战图像识别 ···································································241
10.1.7 实物检测模型库 ························································································244
10.1.8 实物检测领域的相关模型 ············································································245
10.1.9 NASNet控制器 ·························································································246
10.2生成对抗神经网络 ··························································································247
10.2.1 什么是 GAN ·····························································································247
10.2.2 各种不同的 GAN ·······················································································248
10.2.3 GAN实践································································································253
10.2.4 GAN网络的高级接口 TFGAN ······································································263
10.3本章小结 ········································································································264