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 1个张量与多个卷积核的卷积 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