目录
1 卷积神经网络与环境搭建1
1.1 概述 1
1.2 卷积神经网络 2
1.2.1 卷积层 3
1.2.2 修正线性单元. 6
1.2.3 池化层 8
1.2.4 全连接层 8
1.2.5 softmax 层 9
1.2.6 LeNet-5 网络 9
1.3 准备开发环境 10
1.3.1 Anaconda 环境搭建 10
1.3.2 安装TensorFlow 1.x 11
1.3.3 FloydHub 使用介绍 13
1.3.4 AWS 使用介绍 18
1.4 本章小结 26
2 卷积神经网络实践:图像分类27
2.1 概述 27
2.2 卷积神经网络项目实践:基于TensorFlow 1.x 27
2.2.1 数据预处理. 28
2.2.2 网络模型 33
2.2.3 训练网络 39
2.3 卷积神经网络项目实践:基于TensorFlow 2.0 41
2.3.1 TensorFlow 2.0 介绍 41
2.3.2 CIFAR-100 分类网络的TensorFlow 2.0 实现 44
2.4 本章小结. 60
3 彩票预测和生成古诗61
3.1 概述 61
3.2 RNN 61
3.3 LSTM 63
3.4 嵌入矩阵. . 66
3.5 实现彩票预测 69
3.5.1 数据预处理. 70
3.5.2 构建神经网络. 71
3.5.3 训练神经网络 75
3.5.4 分析网络训练情况 83
3.5.5 生成预测号码. 88
3.6 文本生成. 93
3.7 生成古诗:基于TensorFlow 2.0 96
3.7.1 数据预处理 96
3.7.2 构建网络 99
3.7.3 开始训练. 102
3.7.4 生成古诗 102
3.8 自然语言处理 106
3.8.1 序列到序列 106
3.8.2 Transformer . 108
3.8.3 BERT 112
3.9 本章小结 118
4 个性化推荐系统119
4.1 概述 . 119
4.2 MovieLens 1M 数据集分析. 120
4.2.1 下载数据集 . 120
4.2.2 用户数据. 120
4.2.3 电影数据. 122
4.2.4 评分数据. 123
4.3 数据预处理. 123
4.3.1 代码实现. . 124
4.3.2 加载数据并保存到本地 . 127
4.3.3 从本地读取数据 128
4.4 神经网络模型设计 128
4.5 文本卷积神经网络 130
4.6 实现电影推荐:基于TensorFlow 1.x 131
4.6.1 构建计算图 131
4.6.2 训练网络 139
4.6.3 实现个性化推荐 144
4.7 实现电影推荐:基于TensorFlow 2.0 154
4.7.1 构建模型 154
4.7.2 训练网络 166
4.7.3 实现个性化推荐 166
4.8 本章小结 169
5 广告点击率预估:Kaggle 实战170
5.1 概述 . 170
5.2 下载数据集. . 170
5.3 数据字段的含义 . 171
5.4 点击率预估的实现思路 172
5.4.1 梯度提升决策树. 172
5.4.2 因子分解机. . 172
5.4.3 场感知分解机 . 174
5.4.4 网络模型 175
5.5 数据预处理. 176
5.5.1 GBDT 的输入数据处理. 177
5.5.2 FFM 的输入数据处理. 177
5.5.3 DNN 的输入数据处理 179
5.5.4 数据预处理的实现. 180
5.6 训练FFM 188
5.7 训练GBDT . 197
5.8 用LightGBM 的输出生成FM 数据. 203
5.9 训练FM . 207
5.10 实现点击率预估:基于TensorFlow 1.x . 218
5.10.1 构建神经网络 219
5.10.2 训练网络 . 225
5.10.3 点击率预估 . 231
5.11 实现点击率预估:基于TensorFlow 2.0 . 237
5.12 本章小结 . 245
6 人脸识别246
6.1 概述. . . . 246
6.2 人脸检测. 247
6.2.1 OpenCV 人脸检测 . 247
6.2.2 dlib 人脸检测 251
6.2.3 MTCNN 人脸检测 254
6.3 提取人脸特征. 264
6.3.1 使用FaceNet 提取人脸特征 . 264
6.3.2 使用VGG 网络提取人脸特征 265
6.3.3 使用dlib 提取人脸特征. 272
6.4 人脸特征的比较. . 276
6.5 从视频中找人的实现. 282
6.6 视频找人的案例实践. . 284
6.7 人脸识别:基于TensorFlow 2.0 . . 302
6.8 本章小结. . 303
7 AlphaZero / AlphaGo 实践:中国象棋304
7.1 概述. . . 304
7.2 论文解析 . . 305
7.2.1 蒙特卡罗树搜索算法. 307
7.2.2 神经网络. 312
7.2.3 AlphaZero 论文解析. 314
7.3 实现中国象棋:基于TensorFlow 1.x . 317
7.3.1 中国象棋着法表示和FEN 格式. 317
7.3.2 输入特征的设计 321
7.3.3 实现神经网络. 323
7.3.4 神经网络训练和预测. 327
7.3.5 通过自我对弈训练神经网络 330
7.3.6 自我对弈 334
7.3.7 实现蒙特卡罗树搜索:异步方式. 340
7.3.8 训练和运行 353
7.4 实现中国象棋:基于TensorFlow 2.0,多GPU 版. 354
7.5 本章小结 364
8 汉字OCR 365
8.1 概述. 365
8.2 分类网络实现汉字OCR 365
8.2.1 图片矫正 366
8.2.2 文本切割. 368
8.2.3 汉字分类网络. 369
8.3 端到端的汉字OCR:基于TensorFlow 1.x . 371
8.3.1 CNN 设计 372
8.3.2 双向LSTM 设计. . 374
8.3.3 CTC 损失 385
8.3.4 端到端汉字OCR 的网络训练. 388
8.4 汉字OCR:基于TensorFlow 2.0 395
8.4.1 CNN 的实现. 395
8.4.2 双向LSTM 的实现. 396
8.4.3 OCR 网络的训练. 403
8.5 本章小结. 406
9 强化学习:玩转Flappy Bird 和超级马里奥407
9.1 概述. 407
9.2 DQN 算法. 407
9.3 实现DQN 玩Flappy Bird:基于TensorFlow 1.x . 412
9.4 实现DQN 玩Flappy Bird:基于TensorFlow 2.0 . 417
9.5 使用OpenAI Baselines 玩超级马里奥. . 424
9.5.1 Gym . 424
9.5.2 自定义Gym 环境. . 426
9.5.3 使用Baselines 训练. . 431
9.5.4 使用训练好的智能体玩游戏. . 437
9.5.5 开始训练马里奥游戏智能体. . 438
9.6 具有好奇心的强化学习算法. 443
9.7 本章小结. . 444
10 生成对抗网络实践:人脸生成445
10.1 概述 . 445
10.2 GAN . 446
10.3 DCGAN . 447
10.3.1 生成器. . 448
10.3.2 判别器. 449
10.4 WGAN 449
10.5 WGAN-GP . 451
10.5.1 WGAN-GP 算法. 451
10.5.2 训练WGAN-GP 生成人脸:基于TensorFlow 1.x . 452
10.5.3 训练WGAN-GP 生成人脸:基于TensorFlow 2.0 . . 462
10.6 PG-GAN 和TL-GAN . . 469
10.7 本章小结. . 473