第 1 章 深度学习框架简介 1
1.1 深度学习框架编年史 1
1.2 PyTorch 与 TensorFlow 的对比 6
1.3 为什么选择 PyTorch 8
第 2 章 PyTorch 快速入门 11
2.1 安装与配置 11
2.1.1 在 Linux 系统下安装 PyTorch 11
2.1.2 在 Windows 系统下安装 PyTorch 13
2.1.3 学习工具介绍 14
2.1.4 服务器开发介绍 23
2.2 PyTorch 快速入门指南 23
2.2.1 Tensor 23
2.2.2 autograd:自动微分 29
2.2.3 神经网络 31
2.2.4 小试牛刀:CIFAR-10 分类 36
2.3 小结 42
第 3 章 Tensor 和 autograd 43
3.1 Tensor 基础 43
3.1.1 Tensor 的基本操作 43
3.1.2 命名张量 60
3.1.3 Tensor 与 NumPy 61
3.1.4 Tensor 的基本结构 63
3.1.5 变形记:N 种改变 Tensor 形状的方法 65
3.2 小试牛刀:线性回归 70
3.3 autograd 和计算图基础 73
3.3.1 autograd 的用法:requires_grad 与 backward 73
3.3.2 autograd 的原理:计算图 76
3.3.3 扩展 autograd:Function 83
3.3.4 小试牛刀:利用 autograd 实现线性回归 84
3.4 小结 87
第 4 章 神经网络工具箱 nn 89
4.1 nn.Module 89
4.2 常用的神经网络层 93
4.2.1 图像相关层 93
4.2.2 激活函数 97
4.2.3 构建神经网络 98
4.2.4 循环神经网络 101
4.2.5 损失函数 102
4.3 nn.functional 103
4.3.1 nn.functional 与 nn.Module 的区别 103
4.3.2 采样函数 105
4.4 初始化策略 106
4.5 优化器 107
4.6 nn.Module 深入分析 109
4.7 小试牛刀:搭建 ResNet 116
4.8 小结 120
第 5 章 PyTorch 中常用的工具 121
5.1 数据处理 121
5.1.1 Dataset121
5.1.2 DataLoader 128
5.2 预训练模型 135
5.3 可视化工具 137
5.3.1 TensorBoard 137
5.3.2 Visdom 143
5.4 使用 GPU 加速:CUDA 148
5.5 小结 154
第 6 章 向量化 155
6.1 向量化简介 155
6.2 广播法则 156
6.3 索引操作 157
6.3.1 基本索引 157
6.3.2 高级索引 161
6.3.3 einsum / einops 173
6.4 小试牛刀:使用向量化思想解决实际问题 179
6.4.1 Box_IoU 179
6.4.2 RoI Align 181
6.4.3 反向 Unique 185
6.5 小结 185
第 7 章 PyTorch 与 Multi-GPU 187
7.1 单机多卡并行 187
7.1.1 并行原理介绍 187
7.1.2 DataParallel 使用示例 189
7.2 分布式系统 191
7.2.1 分布式系统的基本概念 191
7.2.2 分布式消息传递接口 192
7.2.3 小试牛刀:分布式计算实操演练 196
7.3 PyTorch 分布式训练 198
7.3.1 使用 MPI 进行分布式训练 198
7.3.2 使用 torch.distributed 进行分布式训练 201
7.3.3 使用 Horovod 进行分布式训练 203
7.4 分布式训练中的注意事项 206
7.4.1 保持同步 206
7.4.2 进程协作 207
7.4.3 常用调试技巧 208
7.5 进阶扩展 209
7.6 小结 210
第 8 章 CUDA 扩展与编译 211
8.1 PyTorch C++ 扩展简介 211
8.1.1 C++ 扩展 211
8.1.2 CUDA 扩展 216
8.2 CUDA、NVIDIA-driver、cuDNN、PyTorch 之间的关系 222
8.3 小结 225
第 9 章 PyTorch 实战指南 227
9.1 编程实战:猫和狗二分类 227
9.1.1 比赛介绍 228
9.1.2 文件组织结构 228
9.1.3 __init__.py 229
9.1.4 数据加载 230
9.1.5 模型定义 232
9.1.6 工具函数 233
9.1.7 配置文件 235
9.1.8 main.py 237
9.1.9 使用 244
9.1.10 争议 244
9.2 PyTorch 调试指南 246
9.2.1 ipdb 介绍 246
9.2.2 在 PyTorch 中调试 250
9.3 小结 254
第 10 章 AI 插画师:生成对抗网络 255
10.1 GAN 原理简介 255
10.2 使用 GAN 生成动漫人物头像 259
10.3 实验结果分析 268
10.4 小结 269
第 11 章 AI 诗人:用 Transformer 写诗 271
11.1 自然语言处理的基础知识 271
11.1.1 词向量 271
11.1.2 RNN 274
11.2 CharRNN 277
11.3 Transformer 278
11.3.1 自注意力模块 280
11.3.2 位置编码模块 281
11.4 使用 PyTorch 实现 Transformer 写诗 282
11.5 小结 294
第 12 章 AI 艺术家:神经网络风格迁移 295
12.1 风格迁移原理介绍 296
12.2 使用 PyTorch 实现风格迁移 300
12.3 实验结果分析 308
12.4 小结 310
第 13 章 CenterNet:目标检测 311
13.1 目标检测概述 311
13.2 CenterNet 原理介绍 313
13.3 使用 PyTorch 实现 CenterNet 318
13.3.1 使用 pycocotools 加载 COCO 数据集 318
13.3.2 搭建 CenterNet 网络 319
13.4 实验结果分析 328
13.5 小结 330
参考文献 331