第1章 MNIST机器学习入门 1
1.1 MNIST数据集 1
1.1.1 简介 1
1.1.2 实验:将MNIST数据集保存为图片 4
1.1.3 图像标签的独热表示 6
1.2 利用TensorFlow识别MNIST 7
1.2.1 Softmax回归 7
1.2.2 两层卷积网络分类 13
1.3 总结 17
第2章 CIFAR-10与ImageNet图像识别 19
2.1 CIFAR-10数据集 19
2.1.1 CIFAR-10数据集简介 19
2.1.2 下载CIFAR-10数据 21
2.1.3 TensorFlow的数据读取机制 23
2.1.4 实验:将CIFAR-10数据集保存为图片形式 29
2.2 利用TensorFlow训练CIFAR-10识别模型 33
2.2.1 数据增强 33
2.2.2 CIFAR-10识别模型 35
2.2.3 训练模型 37
2.2.4 在TensorFlow中查看训练进度 38
2.2.5 测试模型效果 40
2.3 ImageNet图像识别模型 43
2.3.1 ImageNet数据集简介 43
2.3.2 历代ImageNet图像识别模型 44
2.4 总结 47
第3章 打造自己的图像识别模型 49
3.1 微调的原理 49
3.2 数据准备 51
3.3 使用TensorFlow Slim微调模型 54
3.3.1 下载TensorFlow Slim的源代码 54
3.3.2 定义新的datasets文件 55
3.3.3 准备训练文件夹 57
3.3.4 开始训练 58
3.3.5 训练程序行为 60
3.3.6 验证模型准确率 61
3.3.7 TensorBoard可视化与超参数选择 62
3.3.8 导出模型并对单张图片进行识别 64
3.4 总结 67
第4章 Deep Dream模型 68
4.1 Deep Dream的技术原理 68
4.2 TensorFlow中的Deep Dream模型实践 70
4.2.1 导入Inception模型 70
4.2.2 生成原始的Deep Dream图像 73
4.2.3 生成更大尺寸的Deep Dream图像 76
4.2.4 生成更高质量的Deep Dream图像 79
4.2.5 最终的Deep Dream模型 84
4.3 总结 87
第5章 深度学习中的目标检测 88
5.1 深度学习中目标检测的原理 89
5.1.1 R-CNN的原理 89
5.1.2 SPPNet的原理 90
5.1.3 Fast R-CNN的原理 93
5.1.4 Faster R-CNN的原理 94
5.2 TensorFlow Object Detection API 97
5.2.1 安装TensorFlow Object Detection API 97
5.2.2 执行已经训练好的模型 99
5.2.3 训练新的模型 104
5.2.4 导出模型并预测单张图片 108
5.3 总结 109
第6章 人脸检测和人脸识别 111
6.1 MTCNN的原理 111
6.2 使用深度卷积网络提取特征 116
6.2.1 三元组损失的定义 118
6.2.2 中心损失的定义 119
6.3 使用特征设计应用 121
6.4 在TensorFlow中实现人脸识别 121
6.4.1 项目环境设置 121
6.4.2 LFW人脸数据库 122
6.4.3 LFW数据库上的人脸检测和对齐 124
6.4.4 使用已有模型验证LFW数据库准确率 125
6.4.5 在自己的数据上使用已有模型 126
6.4.6 重新训练新模型 128
6.4.7 三元组损失和中心损失的定义 133
6.5 总结 135
第7章 图像风格迁移 137
7.1 图像风格迁移的原理 137
7.1.1 原始图像风格迁移的原理 137
7.1.2 快速图像风格迁移的原理 143
7.2 在TensorFlow中实现快速风格迁移 144
7.2.1 使用预训练模型 145
7.2.2 训练自己的模型 148
7.2.3 在TensorBoard中监控训练情况 150
7.2.4 项目实现细节 152
7.3 总结 157
第8章 GAN和DCGAN入门 158
8.1 GAN的原理 158
8.2 DCGAN的原理 160
8.3 在TensorFlow中用DCGAN生成图像 163
8.3.1 生成MNIST图像 164
8.3.2 使用自己的数据集训练 165
8.3.3 程序结构分析:如何将图像读入模型 167
8.3.4 程序结构分析:可视化方法 171
8.4 总结 174
第9章 pix2pix模型与自动上色技术 176
9.1 cGAN的原理 176
9.2 pix2pix模型的原理 178
9.3 TensorFlow中的pix2pix模型 181
9.3.1 执行已有的数据集 181
9.3.2 创建自己的数据集 185
9.4 使用TensorFlow为灰度图像自动上色 188
9.4.1 为食物图片上色 188
9.4.2 为动漫图片上色 190
9.5 总结 192
第10章 超分辨率:如何让图像变得更清晰 193
10.1 数据预处理与训练 193
10.1.1 去除错误图片 193
10.1.2 将图像裁剪到统一大小 196
10.1.3 为代码添加新的操作 196
10.2 总结 202
第11章 CycleGAN与非配对图像转换 203
11.1 CycleGAN的原理 203
11.2 在TensorFlow中用训练CycleGAN模型 205
11.2.1 下载数据集并训练 205
11.2.2 使用自己的数据进行训练 209
11.3 程序结构分析 212
11.4 总结 215
第12章 RNN基本结构与Char RNN文本生成 217
12.1 RNN的原理 217
12.1.1 经典RNN的结构 217
12.1.2 NVS1RNN的结构 221
12.1.3 1 VSN RNN的结构 221
12.2 LSTM的原理 223
12.3 Char RNN的原理 227
12.4 TensorFlow中的RNN实现方式 229
12.4.1 实现RNN的基本单元:RNNCell 229
12.4.2 对RNN进行堆叠:MultiRNNCell 231
12.4.3 BasicRNNCell和BasicLSTMCell的output 231
12.4.4 使用tf.nn.dynamic_rnn展开时间维度 232
12.5 使用TensorFlow实现Char RNN 233
12.5.1 定义输入数据 234
12.5.2 定义多层LSTM模型 235
12.5.3 定义损失 236
12.5.4 训练模型与生成文字 237
12.5.5 更多参数说明 241
12.5.6 运行自己的数据 241
12.6 总结 242
第13章 序列分类问题详解 243
13.1 N VS 1的RNN结构 243
13.2 序列分类问题与数据生成 244
13.3 在TensorFlow中定义RNN分类模型 248
13.3.1 定义模型前的准备工作 248
13.3.2 定义RNN分类模型 249
13.3.3 定义损失并进行训练 251
13.4 模型的推广 252
13.5 总结 253
第14章 词的向量表示:word2vec与词嵌入 254
14.1 为什么需要做词嵌入 254
14.2 词嵌入的原理 255
14.2.1 CBOW实现词嵌入的原理 256
14.2.2 Skip-Gram实现词嵌入的原理 259
14.3 在TensorFlow中实现词嵌入 259
14.3.1 下载数据集 259
14.3.2 制作词表 261
14.3.3 生成每步的训练样本 263
14.3.4 定义模型 265
14.3.5 执行训练 267
14.3.6 可视化 270
14.4 总结 273
第15章 在TensorFlow中进行时间序列预测 274
15.1 时间序列问题的一般形式 274
15.2 用TFTS读入时间序列数据 275
15.2.1 从Numpy数组中读入时间序列数据 275
15.2.2 从CSV文件中读入时间序列数据 279
15.3 使用AR模型预测时间序列 280
15.3.1 AR模型的训练 280
15.3.2 AR模型的验证和预测 282
15.4 使用LSTM模型预测时间序列 284
15.4.1 LSTM模型中的单变量时间序列预测 284
15.4.2 LSTM模型中的多变量时间序列预测 286
15.5 总结 288
第16章 神经网络机器翻译技术 289
16.1 Encoder-Decoder模型的原理 289
16.2 注意力机制 291
16.3 使用TensorFlow NMT搭建神经网络翻译引擎 294
16.3.1 示例:将越南语翻译为英语 295
16.3.2 构建中英翻译引擎 299
16.4 TensorFlow NMT源码简介 302
16.5 总结 304
第17章 看图说话:将图像转换为文字 306
17.1 Image Caption技术综述 306
17.1.1 从Encoder-Decoder结构谈起 306
17.1.2 将Encoder-Decoder应用到Image Caption任务中 308
17.1.3 对Encoder-Decoder的改进1:加入注意力机制 309
17.1.4 对Encoder-Decoder的改进2:加入高层语义 311
17.2 在TensorFlow中实现Image Caption 313
17.2.1 下载代码 313
17.2.2 环境准备 313
17.2.3 编译和数据准备 314
17.2.4 训练和验证 315
17.2.5 测试单张图片 316
17.3 总结 317
第18章 强化学习入门之Q Learning 318
18.1 强化学习中的几个核心概念 318
18.2 Q Learning的原理与实验 320
18.2.1 环境定义 320
18.2.2 Q函数 323
18.2.3 Q函数的学习策略 323
18.2.4 ∈-greedy策略 325
18.2.5 简单的Q Learning示例 325
18.2.6 更复杂的情况 326
18.3 总结 327
第19章 强化学习入门之SARSA算法 328
19.1 SARSA算法的原理 328
19.1.1 通过与Q Learning对比学习SARSA算法 328
19.1.2 off-policy与on-policy 330
19.2 SARSA算法的实现 330
19.3 总结 332
第20章 深度强化学习:Deep Q Learning 333
20.1 DQN算法的原理 333
20.1.1 问题简介 333
20.1.2 Deep Q Network 335
20.1.3 训练方法 336
20.2 在TensorFlow中运行DQN算法 337
20.2.1 安装依赖库 337
20.2.2 训练 338
20.2.3 测试 340
20.3 在TensorFlow中DQN算法的实现分析 341
20.4 总结 343
第21章 策略梯度算法 345
21.1 策略梯度算法的原理 345
21.1.1 Cartpole游戏 345
21.1.2 策略网络 346
21.1.3 训练策略网络 347
21.2 在TensorFlow中实现策略梯度算法 348
21.2.1 初始化 349
21.2.2 定义策略网络 349
21.2.3 训练 351
21.3 总结 354