《深度学习之TensorFlow入门、原理与进阶实战》通过96个案例,全面讲解了深度学习神经网络原理和TensorFlow使用方法。全书共分为3篇,第1篇深度学习与TensorFlow基础,包括快速了解人工智能与TensorFlow、搭建开发环境、TensorFlow基本开发步骤、TensorFlow编程基础、识别图中模糊的手写数字等内容;第2篇深度学习基础——神经网络,介绍了神经网络的基础模型,包括单个神经元、多层神经网络、卷积神经网络、循环神经网络、自编码网络等内容;第3篇深度学习进阶,是对基础网络模型的灵活运用与自由组合,是对前面知识的综合及拔高,包括深度神经网络和对抗神经网络两章内容。本书特别适合TensorFlow深度学习的初学者和进阶读者阅读,也适合社会培训班和各大院校对深度学习有兴趣的学生阅读。
目录
- 配套学习资源
- 前言
- 第1篇 深度学习与TensorFlow基础
- 第1章 快速了解人工智能与TensorFlow2
- 1.1 什么是深度学习2
- 1.2 TensorFlow是做什么的3
- 1.3 TensorFlow的特点4
- 1.4 其他深度学习框架特点及介绍5
- 1.5 如何通过本书学好深度学习6
- 1.5.1 深度学习怎么学6
- 1.5.2 如何学习本书7
- 第2章 搭建开发环境8
- 2.1 下载及安装Anaconda开发工具8
- 2.2 在Windows平台下载及安装TensorFlow11
- 2.3 GPU版本的安装方法12
- 2.3.1 安装CUDA软件包12
- 2.3.2 安装cuDNN库13
- 2.3.3 测试显卡14
- 2.4 熟悉Anaconda 3开发工具15
- 2.4.1 快速了解Spyder16
- 2.4.2 快速了解Jupyter Notebook18
- 第3章 TensorFlow基本开发步骤——以逻辑回归拟合二维数据为例19
- 3.1 实例1:从一组看似混乱的数据中找出y≈2x的规律19
- 3.1.1 准备数据20
- 3.1.2 搭建模型21
- 3.1.3 迭代训练模型23
- 3.1.4 使用模型25
- 3.2 模型是如何训练出来的25
- 3.2.1 模型里的内容及意义25
- 3.2.2 模型内部的数据流向26
- 3.3 了解TensorFlow开发的基本步骤27
- 3.3.1 定义输入节点的方法27
- 3.3.2 实例2:通过字典类型定义输入节点28
- 3.3.3 实例3:直接定义输入节点28
- 3.3.4 定义“学习参数”的变量29
- 3.3.5 实例4:通过字典类型定义“学习参数”29
- 3.3.6 定义“运算”29
- 3.3.7 优化函数,优化目标30
- 3.3.8 初始化所有变量30
- 3.3.9 迭代更新参数到最优解31
- 3.3.10 测试模型31
- 3.3.11 使用模型31
- 第4章 TensorFlow编程基础32
- 4.1 编程模型32
- 4.1.1 了解模型的运行机制33
- 4.1.2 实例5:编写hello world程序演示session的使用34
- 4.1.3 实例6:演示with session的使用35
- 4.1.4 实例7:演示注入机制35
- 4.1.5 建立session的其他方法36
- 4.1.6 实例8:使用注入机制获取节点36
- 4.1.7 指定GPU运算37
- 4.1.8 设置GPU使用资源37
- 4.1.9 保存和载入模型的方法介绍38
- 4.1.10 实例9:保存/载入线性回归模型38
- 4.1.11 实例10:分析模型内容,演示模型的其他保存方法40
- 4.1.12 检查点(Checkpoint)41
- 4.1.13 实例11:为模型添加保存检查点41
- 4.1.14 实例12:更简便地保存检查点44
- 4.1.15 模型操作常用函数总结45
- 4.1.16 TensorBoard可视化介绍45
- 4.1.17 实例13:线性回归的TensorBoard可视化46
- 4.2 TensorFlow基础类型定义及操作函数介绍48
- 4.2.1 张量及操作49
- 4.2.2 算术运算函数55
- 4.2.3 矩阵相关的运算56
- 4.2.4 复数操作函数58
- 4.2.5 规约计算59
- 4.2.6 分割60
- 4.2.7 序列比较与索引提取61
- 4.2.8 错误类62
- 4.3 共享变量62
- 4.3.1 共享变量用途62
- 4.3.2 使用get-variable获取变量63
- 4.3.3 实例14:演示get_variable和Variable的区别63
- 4.3.4 实例15:在特定的作用域下获取变量65
- 4.3.5 实例16:共享变量功能的实现66
- 4.3.6 实例17:初始化共享变量的作用域67
- 4.3.7 实例18:演示作用域与操作符的受限范围68
- 4.4 实例19:图的基本操作70
- 4.4.1 建立图70
- 4.4.2 获取张量71
- 4.4.3 获取节点操作72
- 4.4.4 获取元素列表73
- 4.4.5 获取对象73
- 4.4.6 练习题74
- 4.5 配置分布式TensorFlow74
- 4.5.1 分布式TensorFlow的角色及原理74
- 4.5.2 分布部署TensorFlow的具体方法75
- 4.5.3 实例20:使用TensorFlow实现分布式部署训练75
- 4.6 动态图(Eager)81
- 4.7 数据集(tf.data)82
- 第5章 识别图中模糊的手写数字(实例21)83
- 5.1 导入图片数据集84
- 5.1.1 MNIST数据集介绍84
- 5.1.2 下载并安装MNIST数据集85
- 5.2 分析图片的特点,定义变量87
- 5.3 构建模型87
- 5.3.1 定义学习参数87
- 5.3.2 定义输出节点88
- 5.3.3 定义反向传播的结构88
- 5.4 训练模型并输出中间状态参数89
- 5.5 测试模型90
- 5.6 保存模型91
- 5.7 读取模型92
- 第2篇 深度学习基础——神经网络
- 第6章 单个神经元96
- 6.1 神经元的拟合原理96
- 6.1.1 正向传播98
- 6.1.2 反向传播98
- 6.2 激活函数——加入非线性因素,解决线性模型缺陷99
- 6.2.1 Sigmoid函数99
- 6.2.2 Tanh函数100
- 6.2.3 ReLU函数101
- 6.2.4 Swish函数103
- 6.2.5 激活函数总结103
- 6.3 softmax算法——处理分类问题103
- 6.3.1 什么是softmax104
- 6.3.2 softmax原理104
- 6.3.3 常用的分类函数105
- 6.4 损失函数——用真实值与预测值的距离来指导模型的收敛方向105
- 6.4.1 损失函数介绍105
- 6.4.2 TensorFlow中常见的loss函数106
- 6.5 softmax算法与损失函数的综合应用108
- 6.5.1 实例22:交叉熵实验108
- 6.5.2 实例23:one_hot实验109
- 6.5.3 实例24:sparse交叉熵的使用110
- 6.5.4 实例25:计算loss值110
- 6.5.5 练习题111
- 6.6 梯度下降——让模型逼近最小偏差111
- 6.6.1 梯度下降的作用及分类111
- 6.6.2 TensorFlow中的梯度下降函数112
- 6.6.3 退化学习率——在训练的速度与精度之间找到平衡113
- 6.6.4 实例26:退化学习率的用法举例114
- 6.7 初始化学习参数115
- 6.8 单个神经元的扩展——Maxout网络116
- 6.8.1 Maxout介绍116
- 6.8.2 实例27:用Maxout网络实现MNIST分类117
- 6.9 练习题118
- 第7章 多层神经网络——解决非线性问题119
- 7.1 线性问题与非线性问题119
- 7.1.1 实例28:用线性单分逻辑回归分析肿瘤是良性还是恶性的119
- 7.1.2 实例29:用线性逻辑回归处理多分类问题123
- 7.1.3 认识非线性问题129
- 7.2 使用隐藏层解决非线性问题130
- 7.2.1 实例30:使用带隐藏层的神经网络拟合异或操作130
- 7.2.2 非线性网络的可视化及其意义133
- 7.2.3 练习题135
- 7.3 实例31:利用全连接网络将图片进行分类136
- 7.4 全连接网络训练中的优化技巧137
- 7.4.1 实例32:利用异或数据集演示过拟合问题138
- 7.4.2 正则化143
- 7.4.3 实例33:通过正则化改善过拟合情况144
- 7.4.4 实例34:通过增大数据集改善过拟合145
- 7.4.5 练习题146
- 7.4.6 dropout——训练过程中,将部分神经单元暂时丢弃146
- 7.4.7 实例35:为异或数据集模型添加dropout147
- 7.4.8 实例36:基于退化学习率dropout技术来拟合异或数据集149
- 7.4.9 全连接网络的深浅关系150
- 7.5 练习题150
- 第8章 卷积神经网络——解决参数太多问题151
- 8.1 全连接网络的局限性151
- 8.2 理解卷积神经网络152
- 8.3 网络结构153
- 8.3.1 网络结构描述153
- 8.3.2 卷积操作155
- 8.3.3 池化层157
- 8.4 卷积神经网络的相关函数158
- 8.4.1 卷积函数tf.nn.conv2d158
- 8.4.2 padding规则介绍159
- 8.4.3 实例37:卷积函数的使用160
- 8.4.4 实例38:使用卷积提取图片的轮廓165
- 8.4.5 池化函数tf.nn.max_pool(avg_pool)167
- 8.4.6 实例39:池化函数的使用167
- 8.5 使用卷积神经网络对图片分类170
- 8.5.1 CIFAR介绍171
- 8.5.2 下载CIFAR数据172
- 8.5.3 实例40:导入并显示CIFAR数据集173
- 8.5.4 实例41:显示CIFAR数据集的原始图片174
- 8.5.5 cifar10_input的其他功能176
- 8.5.6 在TensorFlow中使用queue176
- 8.5.7 实例42:协调器的用法演示178
- 8.5.8 实例43:为session中的队列加上协调器179
- 8.5.9 实例44:建立一个带有全局平均池化层的卷积神经网络180
- 8.5.10 练习题183
- 8.6 反卷积神经网络183
- 8.6.1 反卷积神经网络的应用场景184
- 8.6.2 反卷积原理184
- 8.6.3 实例45:演示反卷积的操作185
- 8.6.4 反池化原理188
- 8.6.5 实例46:演示反池化的操作189
- 8.6.6 实例47:演示gradients基本用法192
- 8.6.7 实例48:使用gradients对多个式子求多变量偏导192
- 8.6.8 实例49:演示梯度停止的实现193
- 8.7 实例50:用反卷积技术复原卷积网络各层图像195
- 8.8 善用函数封装库198
- 8.8.1 实例51:使用函数封装库重写CIFAR卷积网络198
- 8.8.2 练习题201
- 8.9 深度学习的模型训练技巧201
- 8.9.1 实例52:优化卷积核技术的演示201
- 8.9.2 实例53:多通道卷积技术的演示202
- 8.9.3 批量归一化204
- 8.9.4 实例54:为CIFAR图片分类模型添加BN207
- 8.9.5 练习题209
- 第9章 循环神经网络——具有记忆功能的网络210
- 9.1 了解RNN的工作原理210
- 9.1.1 了解人的记忆原理210
- 9.1.2 RNN网络的应用领域212
- 9.1.3 正向传播过程212
- 9.1.4 随时间反向传播213
- 9.2 简单RNN215
- 9.2.1 实例55:简单循环神经网络实现——裸写一个退位减法器215
- 9.2.2 实例56:使用RNN网络拟合回声信号序列220
- 9.3 循环神经网络(RNN)的改进225
- 9.3.1 LSTM网络介绍225
- 9.3.2 窥视孔连接(Peephole)228
- 9.3.3 带有映射输出的STMP230
- 9.3.4 基于梯度剪辑的cell230
- 9.3.5 GRU网络介绍230
- 9.3.6 Bi-RNN网络介绍231
- 9.3.7 基于神经网络的时序类分类CTC232
- 9.4 TensorFlow实战RNN233
- 9.4.1 TensorFlow中的cell类233
- 9.4.2 通过cell类构建RNN234
- 9.4.3 实例57:构建单层LSTM网络对MNIST数据集分类239
- 9.4.4 实例58:构建单层GRU网络对MNIST数据集分类240
- 9.4.5 实例59:创建动态单层RNN网络对MNIST数据集分类240
- 9.4.6 实例60:静态多层LSTM对MNIST数据集分类241
- 9.4.7 实例61:静态多层RNN-LSTM连接GRU对MNIST数据集分类242
- 9.4.8 实例62:动态多层RNN对MNIST数据集分类242
- 9.4.9 练习题243
- 9.4.10 实例63:构建单层动态双向RNN对MNIST数据集分类243
- 9.4.11 实例64:构建单层静态双向RNN对MNIST数据集分类244
- 9.4.12 实例65:构建多层双向RNN对MNIST数据集分类246
- 9.4.13 实例66:构建动态多层双向RNN对MNIST数据集分类247
- 9.4.14 初始化RNN247
- 9.4.15 优化RNN248
- 9.4.16 实例67:在GRUCell中实现LN249
- 9.4.17 CTC网络的loss——ctc_loss251
- 9.4.18 CTCdecoder254
- 9.5 实例68:利用BiRNN实现语音识别255
- 9.5.1 语音识别背景255
- 9.5.2 获取并整理样本256
- 9.5.3 训练模型265
- 9.5.4 练习题272
- 9.6 实例69:利用RNN训练语言模型273
- 9.6.1 准备样本273
- 9.6.2 构建模型275
- 9.7 语言模型的系统学习279
- 9.7.1 统计语言模型279
- 9.7.2 词向量279
- 9.7.3 word2vec281
- 9.7.4 实例70:用CBOW模型训练自己的word2vec283
- 9.7.5 实例71:使用指定侯选采样本训练word2vec293
- 9.7.6 练习题296
-
9.8 处理