第一部分 探索深度学习之方式的开始 2
第1章 开篇 2
1.1人工智能的发展 2
1.1.1萌芽 2
1.1.2复苏 4
1.1.3现代实践:大数据+深度神经网络模型 6
1.2大数据 7
1.3机器学习与深度学习 8
1.3.1机器学习 9
1.3.2深度学习 13
1.3.3同人工智能的关系 15
1.4人工神经网络与TensorFlow 16
1.4.1人工神经网络 16
1.4.2 TensorFlow 26
1.5其他主流深度学习框架介绍 27
1.5.1 Caffe 28
1.5.2 Torch 30
1.5.3 Theano 31
1.5.4 MXNet 32
1.5.5 Keras 34
1.6机器学习的常见任务 35
1.6.1分类 35
1.6.2回归 36
1.6.3去噪 37
1.6.4转录 37
1.6.5机器翻译 37
1.6.6异常检测 38
1.6.7结构化输出 38
1.7深度学习的现代应用 39
1.7.1计算机视觉 39
1.7.2自然语言处理 44
1.7.3语音识别 45
第2章 安装TensorFlow 47
2.1安装前的须知 47
2.1.1检查硬件是否达标 47
2.1.2推荐选用GPU进行训练 50
2.1.3为什么选择Linux系统 57
2.1.4为什么选择Python语言 58
2.2安装Anaconda 59
2.3 TensorFlow的两个主要依赖包 61
2.3.1 Protocol Buffer 62
2.3.2 Bazel 64
2.4安装CUDA和cuDNN 67
2.4.1 CUDA 68
2.4.2 cuDNN 71
2.5正式安装TensorFlow 74
2.5.1使用pip安装 74
2.5.2从源代码编译并安装 77
2.6测试你的TensorFlow 82
2.6.1运行向量相加的例子 82
2.6.2加载过程存在的一些问题 84
2.7推荐使用IDE 84
第3章 TensorFlow编程策略 86
3.1初识计算图与张量 86
3.2计算图——TensorFlow的计算模型 87
3.3张量——TensorFlow的数据模型 90
3.3.1概念 91
3.3.2使用张量 92
3.4会话——TensorFlow的运行模型 93
3.4.1 TensorFlow系统结构概述 93
3.4.2简单使用会话 95
3.4.3使用with/as环境上下文管理器 96
3.4.4 Session的参数配置 99
3.4.5 placeholder机制 99
3.5 TensorFlow变量 102
3.5.1创建变量 102
3.5.2变量与张量 106
3.6管理变量的变量空间 108
3.6.1 get_variable()函数 108
3.6.2 variable_scope()与name_scope() 109
第二部分 TensorFlow实现深度网络 116
第4章 深度前馈神经网络 116
4.1网络的前馈方式 116
4.2全连接 118
4.2.1神经元与全连接结构 118
4.2.2前向传播算法 120
4.3线性模型的局限性 124
4.4激活函数 131
4.4.1常用激活函数 131
4.4.2激活函数实现去线性化 135
4.5多层网络解决异或运算 137
4.6损失函数 140
4.6.1经典损失函数 140
4.6.2自定义损失函数 154
第5章 优化网络的方法 157
5.1基于梯度的优化 157
5.1.1梯度下降算法 158
5.1.2随机梯度下降 164
5.2反向传播 165
5.2.1简要解释反向传播算法 165
5.2.2自适应学习率算法 168
5.2.3 TensorFlow提供的优化器 171
5.3学习率的独立设置 176
5.3.1指数衰减的学习率 177
5.3.2其他优化学习率的方法 179
5.4拟合 183
5.4.1过拟合和欠拟合 183
5.4.2正则化的方法 186
5.4.3 Bagging方法 192
5.4.4 Dropout方法 193
第6章 全连神经网络的经典实践 197
6.1 MNIST数据集 197
6.2网络的设计 201
6.3超参数和验证集 209
6.4与简单模型的对比 210
第7章 卷积神经网络 213
7.1准备性的认识 213
7.1.1图像识别与经典数据集 214
7.1.2卷积网络的神经科学基础 217
7.1.3卷积神经网络的历史 220
7.2卷积 222
7.2.1卷积运算 222
7.2.2卷积运算的稀疏连接 224
7.2.3卷积运算的参数共享 226
7.2.4卷积运算的平移等变 228
7.2.5多卷积核 229
7.2.6卷积层的代码实现 231
7.3池化 236
7.3.1池化过程 237
7.3.2常用池化函数 238
7.3.3池化层的代码实现 239
7.4实现卷积神经网络的简例 240
7.4.1卷积神经网络的一般框架 240
7.4.2用简单卷积神经网络实现Cifar-10数据集分类 243
7.5图像数据处理 258
7.5.1图像编解码处理 259
7.5.2翻转图像 261
7.5.3图像色彩调整 262
7.5.4图像标准化处理 266
7.5.5调整图像大小 267
7.5.6图像的标注框 273
第8章 经典卷积神经网络 277
8.1 LeNet-5卷积网络模型 277
8.1.1模型结构 278
8.1.2 TensorFlow实现 280
8.2 AlexNet卷积网络模型 286
8.2.1模型结构 287
8.2.2 TensorFlow实现 290
8.3 VGGNet卷积网络模型 301
8.3.1模型结构 301
8.3.2 TensorFlow实现 306
8.4 InceptionNet-V 3卷积网络模型 316
8.4.1模型结构 322
8.4.2 Inception V3 Module的实现 325
8.4.3使用Inception V3完成模型迁移 328
8.5 ResNet卷积网络模型 341
8.5.1模型结构 342
8.5.2 TensorFlow实现 346
第9章 循环神经网络 356
9.1循环神经网络简介 357
9.1.1循环神经网络的前向传播程序设计 360
9.1.2计算循环神经网络的梯度 364
9.1.3循环神经网络的不同设计模式 366
9.2自然语言建模与词向量 367
9.2.1统计学语言模型 367
9.2.2 Word2Vec 371
9.2.3用TensorFlow实现Word2Vec 376
9.3 LSTM实现自然语言建模 394
9.3.1长短时记忆网络(LSTM) 395
9.3.2 LSTM在自然语言建模中的应用 399
9.3.3循环神经网络的Dropout 414
9.4循环神经网络的变种 416
9.4.1双向循环神经网络 416
9.4.2深层循环神经网络 418
第10章 深度强化学习 420
10.1理解基本概念 420
10.2深度强化学习的思路 421
10.3典型应用场景举例 423
10.3.1场景1:机械臂自控 423
10.3.2场景2:自动游戏系统 424
10.3.3场景3:自动驾驶 425
10.3.4场景4:智能围棋系统 426
10.4 Q学习与深度Q网络 429
10.4.1 Q学习与深度Q学习 429
10.4.2深度Q网络 431
第三部分 TensorFlow的使用进阶 436
第11章 数据读取 436
11.1文件格式 436
11.1.1 TFRecord格式 437
11.1.2 CSV格式 440
11.2队列 443
11.2.1数据队列 443
11.2.2文件队列 445
11.3使用多线程处理输入的数据 449
11.3.1使用Coordinator类管理线程 449
11.3.2使用QueueRunner创建线程 452
11.4组织数据batch 454
第12章 模型持久化 462
12.1通过代码实现 462
12.2模型持久化的原理 469
12.2.1model.ckpt.mate文件 470
12.2.2从.index与.data文件读取变量的值 481
12.3持久化的MNIST手写字识别 482
12.4 PB文件 489
第13章 TensorBoard可视化 493
13.1 TensorBoard简要介绍 493
13.2 MNIST手写字识别的可视化 498
13.2.1实现的过程 498
13.2.2标量数据可视化结果 505
13.2.3图像数据可视化结果 512
13.2.4计算图可视化结果 513
13.3其他监控指标可视化 521
第14章 加速计算 526
14.1 TensorFlow支持的设备 526
14.2 TensorFlow单机实现 528
14.2.1查看执行运算的设备 529
14.2.2 device()函数的使用 531
14.3并行训练的原理 535
14.3.1数据并行 536
14.3.2模型并行 539
14.4单机多GPU加速TensorFlow程序 540
14.4.1实现的过程 540
14.4.2多GPU并行的可视化 547
14.5分布式TensorFlow概述 548