目录
任务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
