第1章 Keras高级深度学习入门 1
1.1 为什么Keras是完美的深度学习库 1
1.1.1 安装Keras和TensorFlow 2
1.2 实现核心深度学习模型——MLP、CNN和RNN 3
1.2.1 MLP、CNN和RNN之间的差异 4
1.3 多层感知器(MLP) 4
1.3.1 MNIST数据集 4
1.3.2 MNIST数字分类模型 6
1.3.3 正则化 11
1.3.4 输出激活与损失函数 12
1.3.5 优化 13
1.3.6 性能评价 16
1.3.7 模型概述 18
1.4 卷积神经网络(CNN) 19
1.4.1 卷积 21
1.4.2 池化操作 23
1.4.3 性能评价与模型概要 23
1.5 循环神经网络(RNN) 25
1.6 小结 30
参考文献 31
第2章 深度神经网络 32
2.1 函数式API 32
2.1.1 创建一个两输入单输出模型 35
2.2 深度残差网络(ResNet) 40
2.3 ResNet v2 45
2.4 密集连接卷积网络(DenseNet) 48
2.4.1 为CIFAR10数据集构建一个100层的DenseNet-BC网络 50
2.5 小结 53
参考文献 54
第3章 自编码器 55
3.1 自编码器原理 55
3.2 使用Keras构建自编码器 57
3.3 去噪自编码器(DAE) 65
3.4 自动色彩迁移自编码器 69
3.5 小结 75
参考文献 76
第4章 生成对抗网络 77
4.1 GAN概要 77
4.2 GAN原理 78
4.3 Keras中的GAN实现 81
4.4 条件GAN 89
4.5 小结 96
参考文献 97
第5章 改进的GAN方法 98
5.1 Wasserstein GAN 98
5.1.1 距离函数 99
5.1.2 GAN中的距离函数 100
5.1.3 Wasserstein损失函数的使用 102
5.1.4 使用Keras实现WGAN 105
5.2 最小二乘GAN(LSGAN) 111
5.3 辅助分类器GAN(ACGAN) 114
5.4 小结 126
参考文献 126
第6章 分离表示GAN 127
6.1 分离表示 127
6.2 InfoGAN 129
6.3 在Keras中实现InfoGAN 131
6.4 InfoGAN生成器的输出 140
6.5 StackedGAN 142
6.6 在Keras中实现StackedGAN 143
6.7 StackedGAN的生成器输出 158
6.8 小结 160
参考文献 161
第7章 跨域GAN 162
7.1 CycleGAN原理 162
7.1.1 CycleGAN模型 164
7.1.2 使用Keras实现CycleGAN 167
7.1.3 CycleGAN生成器的输出 180
7.1.4 CycleGAN用于MNIST和SVHN数据集 182
7.2 小结 188
参考文献 189
第8章 变分自编码器 190
8.1 VAE原理 190
8.1.1 变分推断 191
8.1.2 核心公式 192
8.1.3 优化 192
8.1.4 再参数化的技巧 193
8.1.5 解码测试 194
8.1.6 VAE的Keras实现 194
8.1.7 将CNN应用于VAE 199
8.2 条件VAE(CVAE) 204
8.3 β-VAE:可分离的隐式表示VAE 212
8.4 小结 216
参考文献 216
第9章 深度强化学习 217
9.1 强化学习原理 217
9.2 Q值 219
9.3 Q-Learning例子 220
9.3.1 用Python实现Q-Learning 224
9.4 非确定性环境 230
9.5 时序差分学习 230
9.5.1 OpenAI Gym中应用Q-Learning 231
9.6 深度Q网络(DQN) 235
9.6.1 用Keras实现DQN 237
9.6.2 双Q-Learning(DDQN) 242
9.7 小结 243
参考文献 244
第10章 策略梯度方法 245
10.1 策略梯度定理 245
10.2 蒙特卡罗策略梯度(REINFORCE)方法 247
10.3 基线REINFORCE方法 249
10.4 Actor-Critic方法 250
10.5 优势Actor-Critic方法 251
10.6 Keras中的策略梯度方法 252
10.7 策略梯度方法的性能评估 266
10.8 小结 270
参考文献 271