第 1章 数学准备 001
1.1 偏微分 001
1.1.1 导函数和偏导函数 001
1.1.2 微分系数与偏微分系数 003
1.1.3 偏微分的基本公式 006
1.1.4 复合函数的偏微分 007
1.1.5 拓展全微分 009
1.2 线性代数 011
1.2.1 向量 011
1.2.1.1 向量的基础知识 011
1.2.1.2 向量的和与标量倍数 011
1.2.1.3 向量的内积 012
1.2.2 矩阵 013
1.2.2.1 矩阵的基础知识 013
1.2.2.2 矩阵的和与标量倍数 014
1.2.2.3 矩阵的乘积 014
1.2.2.4 正则矩阵与逆矩阵 016
1.2.2.5 转置矩阵 017
1.3 小结 018
第 2章 Python准备 019
2.1 Python 2和Python 3 020
2.2 Anaconda发行版 021
2.3 Python的基础知识 025
2.3.1 Python程序的执行 025
2.3.2 数据类型 026
2.3.2.1 类型是什么 026
2.3.2.2 字符串类型 027
2.3.2.3 数值类型 028
2.3.2.4 布尔类型 030
2.3.3 变量 031
2.3.3.1 变量是什么 031
2.3.3.2 变量与类型 032
2.3.4 数据结构 033
2.3.4.1 列表 033
2.3.4.2 字典 034
2.3.5 运算 035
2.3.5.1 运算符与操作数 035
2.3.5.2 算术运算的运算符 036
2.3.5.3 赋值运算符 036
2.3.6 基本结构 038
2.3.6.1 if语句 038
2.3.6.2 while语句 039
2.3.6.3 for语句 041
2.3.7 函数 043
2.3.8 类 045
2.3.9 库 048
2.4 NumPy 049
2.4.1 NumPy数组 049
2.4.2 使用NumPy进行向量和矩阵的计算 051
2.4.3 数组和多维数组的生成 053
2.4.4 切片 054
2.4.5 广播 056
2.5 面向深度学习的库 058
2.5.1 TensorFlow 058
2.5.2 Keras 059
2.5.3 参考Theano 060
2.6 小结 063
第3章 神经网络 065
3.1 什么是神经网络 065
3.1.1 脑和神经元 065
3.1.2 深度学习和神经网络 066
3.2 作为电路的神经网络 067
3.2.1 简单的模型化 067
3.2.2 逻辑电路 069
3.2.2.1 逻辑门 069
3.2.2.2 与门 069
3.2.2.3 或门 072
3.2.2.4 非门 074
3.3 简单感知机 075
3.3.1 模型化 075
3.3.2 实现 077
3.4 逻辑回归 081
3.4.1 阶跃函数与sigmoid函数 081
3.4.2 模型化 082
3.4.2.1 似然函数与交叉熵误差函数 082
3.4.2.2 梯度下降法 084
3.4.2.3 随机梯度下降法与小批量梯度下降法 085
3.4.3 实现 086
3.4.3.1 使用TensorFlow的实现 086
3.4.3.2 使用Keras的实现 092
3.4.4 拓展sigmoid函数与概率密度函数、累积分布函数 096
3.4.5 拓展梯度下降法和局部最优解 099
3.5 多分类逻辑回归 101
3.5.1 softmax函数 101
3.5.2 模型化 102
3.5.3 实现 106
3.5.3.1 使用TensorFlow的实现 106
3.5.3.2 使用Keras的实现 110
3.6 多层感知机 111
3.6.1 非线性分类 111
3.6.1.1 异或门 111
3.6.1.2 逻辑门的组合 113
3.6.2 模型化 115
3.6.3 实现 119
3.6.3.1 使用TensorFlow的实现 119
3.6.3.2 使用Keras的实现 122
3.7 模型的评估 123
3.7.1 从分类到预测 123
3.7.2 预测的评估 124
3.7.3 简单的实验 126
3.8 小结 131
第4章 深度神经网络 133
4.1 进入深度学习之前的准备 133
4.2 训练过程中的问题 138
4.2.1 梯度消失问题 138
4.2.2 过拟合问题 141
4.3 训练的高效化 142
4.3.1 激活函数 143
4.3.1.1 双曲正切函数 143
4.3.1.2 ReLU 145
4.3.1.3 Leaky ReLU 147
4.3.1.4 Parametric ReLU 149
4.3.2 Dropout 152
4.4 代码的设计 157
4.4.1 基本设计 157
4.4.1.1 使用TensorFlow的实现 157
4.4.1.2 使用Keras的实现 160
4.4.1.3 拓展对TensorFlow模型进行类封装 161
4.4.2 训练的可视化 166
4.4.2.1 使用TensorFlow的实现 167
4.4.2.2 使用Keras的实现 172
4.5 高级技术 176
4.5.1 数据的正则化与权重的初始化 176
4.5.2 学习率的设置 179
4.5.2.1 动量 179
4.5.2.2 Nesterov动量 180
4.5.2.3 Adagrad 181
4.5.2.4 Adadelta 182
4.5.2.5 RMSprop 184
4.5.2.6 Adam 185
4.5.3 早停法 187
4.5.4 Batch Normalization 190
4.6 小结 195
第5章 循环神经网络 197
5.1 基本概念 197
5.1.1 时间序列数据 197
5.1.2 过去的隐藏层 199
5.1.3 基于时间的反向传播算法 202
5.1.4 实现 204
5.1.4.1 准备时间序列数据 205
5.1.4.2 使用TensorFlow的实现 207
5.1.4.3 使用Keras的实现 214
5.2 LSTM 215
5.2.1 LSTM 块 215
5.2.2 CEC、输入门和输出门 217
5.2.2.1 稳态误差 217
5.2.2.2 输入权重冲突和输出权重冲突 219
5.2.3 遗忘门 220
5.2.4 窥视孔连接 222
5.2.5 模型化 223
5.2.6 实现 227
5.2.7 长期依赖信息的训练评估——Adding Problem 229
5.3 GRU 232
5.3.1 模型化 232
5.3.2 实现 233
5.4 小结 235
第6章 循环神经网络的应用 237
6.1 双向循环神经网络 237
6.1.1 未来的隐藏层 237
6.1.2 前向、后向传播 239
6.1.3 MNIST的预测 241
6.1.3.1 转换为时间序列数据 241
6.1.3.2 使用TensorFlow的实现 242
6.1.3.3 使用Keras的实现 245
6.2 循环神经网络编码器- 解码器 246
6.2.1 序列到序列模型 246
6.2.2 简单的问答系统 247
6.2.2.1 设置问题——加法的训练 247
6.2.2.2 数据的准备 248
6.2.2.3 使用TensorFlow的实现 251
6.2.2.4 使用Keras的实现 260
6.3 注意力模型 261
6.3.1 时间的权重 261
6.3.2 LSTM中的注意力机制 263
6.4 记忆网络 265
6.4.1 记忆外部化 265
6.4.2 应用于问答系统 266
6.4.2.1 bAbi任务 266
6.4.2.2 模型化 267
6.4.3 实现 269
6.4.3.1 数据的准备 269
6.4.3.2 使用TensorFlow的实现 272
6.5 小结 276
附录 279
A.1 模型的保存和读取 279
A.1.1 使用TensorFlow时的处理 279
A.1.2 使用Keras时的处理 284
A.2 TensorBoard 285
A.3 tf.contrib.learn 292
展开