图解深度学习与神经网络
内容介绍
本书是以TensorFlow 为工具介绍神经网络和深度学习的入门书,内容循序渐进,以简单示例和图例的形式,展示神经网络和深度学习背后的数学基础原理,帮助读者更好地理解复杂抽象的公式。同时,采用手动计算和程序代码这两种方式讲解示例,可以更好地帮助读者理解TensorFlow的常用函数接口,为读者掌握利用TensorFlow搭建人工智能项目打下良好的基础。
本书适合神经网络、深度学习、TensorFlow的入门者阅读。
目录
- 1 深度学习及TensorFlow 简介 1
- 1.1 深度学习 1
- 1.2 TensorFlow 简介及安装 2
- 2 基本的数据结构及运算6
- 2.1 张量 6
- 2.1.1 张量的定义 6
- 2.1.2 Tensor 与Numpy 的ndarray 转换 9
- 2.1.3 张量的尺寸 10
- 2.1.4 图像转换为张量 13
- 2.2 随机数 14
- 2.2.1 均匀(平均)分布随机数 14
- 2.2.2 正态(高斯)分布随机数 15
- 2.3 单个张量的运算 17
- 2.3.1 改变张量的数据类型 17
- 2.3.2 访问张量中某一个区域的值 19
- 2.3.3 转置 22
- 2.3.4 改变形状 26
- 2.3.5 归约运算:求和、平均值、最大(小)值 29
- 2.3.6 最大(小)值的位置索引 34
- 2.4 多个张量之间的运算 35
- 2.4.1 基本运算:加、减、乘、除 35
- 2.4.2 乘法 41
- 2.4.3 张量的连接 42
- 2.4.4 张量的堆叠 44
- 2.4.5 张量的对比 48
- 2.5 占位符 49
- 2.6 Variable 对象 50
- 3 梯度及梯度下降法 52
- 3.1 梯度 52
- 3.2 导数计算的链式法则 53
- 3.2.1 多个函数和的导数 54
- 3.2.2 复合函数的导数 54
- 3.2.3 单变量函数的驻点、极值点、鞍点 55
- 3.2.4 多变量函数的驻点、极值点、鞍点 57
- 3.2.5 函数的泰勒级数展开 60
- 3.2.6 梯度下降法 63
- 3.3 梯度下降法 73
- 3.3.1 Adagrad 法 73
- 3.3.2 Momentum 法 75
- 3.3.3 NAG 法 77
- 3.3.4 RMSprop 法 78
- 3.3.5 具备动量的RMSprop 法 80
- 3.3.6 Adadelta 法 81
- 3.3.7 Adam 法 82
- 3.3.8 Batch 梯度下降 84
- 3.3.9 随机梯度下降 85
- 3.3.10 mini-Batch 梯度下降 86
- 3.4 参考文献 86
- 4 回归分析 88
- 4.1 线性回归分析 88
- 4.1.1 一元线性回归 88
- 4.1.2 保存和加载回归模型 91
- 4.1.3 多元线性回归 95
- 4.2 非线性回归分析 99
- 5 全连接神经网络 102
- 5.1 基本概念 102
- 5.2 计算步骤 104
- 5.3 神经网络的矩阵表达 107
- 5.4 激活函数 112
- 5.4.1 sigmoid 激活函数 112
- 5.4.2 tanh 激活函数 113
- 5.4.3 ReLU 激活函数 114
- 5.4.4 leaky relu 激活函数 115
- 5.4.5 elu 激活函数 118
- 5.4.6 crelu 激活函数 119
- 5.4.7 selu 激活函数 120
- 5.4.8 relu6 激活函数 121
- 5.4.9 softplus 激活函数 121
- 5.4.10 softsign 激活函数 122
- 5.5 参考文献 123
- 6 神经网络处理分类问题 125
- 6.1 TFRecord 文件 125
- 6.1.1 将ndarray 写入TFRecord 文件 125
- 6.1.2 从TFRecord 解析数据 128
- 6.2 建立分类问题的数学模型 134
- 6.2.1 数据类别(标签) 134
- 6.2.2 图像与TFRecrder 135
- 6.2.3 建立模型 140
- 6.3 损失函数与训练模型 143
- 6.3.1 sigmoid 损失函数 143
- 6.3.2 softmax 损失函数 144
- 6.3.3 训练和评估模型 148
- 6.4 全连接神经网络的梯度反向传播 151
- 6.4.1 数学原理及示例 151
- 6.4.2 梯度消失 166
- 7 一维离散卷积 168
- 7.1 一维离散卷积的计算原理 168
- 7.1.1 full 卷积 169
- 7.1.2 valid 卷积 170
- 7.1.3 same 卷积 170
- 7.1.4 full、same、valid 卷积的关系 171
- 7.2 一维卷积定理 174
- 7.2.1 一维离散傅里叶变换 174
- 7.2.2 卷积定理 177
- 7.3 具备深度的一维离散卷积 182
- 7.3.1 具备深度的张量与卷积核的卷积 182
- 7.3.2 具备深度的张量分别与多个卷积核的卷积 183
- 7.3.3 多个具备深度的张量分别与多个卷积核的卷积 185
- 8 二维离散卷积 187
- 8.1 二维离散卷积的计算原理 187
- 8.1.1 full 卷积 187
- 8.1.2 same 卷积 189
- 8.1.3 valid 卷积 191
- 8.1.4 full、same、valid 卷积的关系 192
- 8.1.5 卷积结果的输出尺寸 193
- 8.2 离散卷积的性质 194
- 8.2.1 可分离的卷积核 194
- 8.2.2 full 和same 卷积的性质 195
- 8.2.3 快速计算卷积 197
- 8.3 二维卷积定理 198
- 8.3.1 二维离散傅里叶变换 198
- 8.3.2 二维与一维傅里叶变换的关系 201
- 8.3.3 卷积定理 203
- 8.3.4 利用卷积定理快速计算卷积 203
- 8.4 多深度的离散卷积 205
- 8.4.1 基本的多深度卷积 205
- 8.4.2 一个张量与多个卷积核的卷积 207
- 8.4.3 多个张量分别与多个卷积核的卷积 208
- 8.4.4 在每一深度上分别卷积 211
- 8.4.5 单个张量与多个卷积核在深度上分别卷积 212
- 8.4.6 分离卷积 214
- 9 池化操作218
- 9.1 same 池化 218
- 9.1.1 same 最大值池化 218
- 9.1.2 多深度张量的same 池化 221
- 9.1.3 多个三维张量的same 最大值池化 223
- 9.1.4 same 平均值池化 224
- 9.2 valid 池化 226
- 9.2.1 多深度张量的vaild 池化 228
- 9.2.2 多个三维张量的valid 池化 229
- 10 卷积神经网络231
- 10.1 浅层卷积神经网络 231
- 10.2 LeNet 238
- 10.3 AlexNet 244
- 10.3.1 AlexNet 网络结构详解 244
- 10.3.2 dropout 及其梯度下降 247
- 10.4 VGGNet 256
- 10.5 GoogleNet 264
- 10.5.1 网中网结构 264
- 10.5.2 Batch Normalization 269
- 10.5.3 BN 与卷积运算的关系 273
- 10.5.4 指数移动平均 275
- 10.5.5 带有BN 操作的卷积神经网络 276
- 10.6 ResNet 281
- 10.7 参考文献 284
- 11 卷积的梯度反向传播 286
- 11.1 valid 卷积的梯度 286
- 11.1.1 已知卷积核,对未知张量求导 286
- 11.1.2 已知输入张量,对未知卷积核求导 290
- 11.2 same 卷积的梯度 294
- 11.2.1 已知卷积核,对输入张量求导 294
- 11.2.2 已知输入张量,对未知卷积核求导 298
- 12 池化操作的梯度 303
- 12.1 平均值池化的梯度 303
- 12.2 最大值池化的梯度 306
- 13 BN 的梯度反向传播311
- 13.1 BN 操作与卷积的关系 311
- 13.2 示例详解 314
- 14 TensorFlow 搭建神经网络的主要函数 324