目录
第1章 PyTorch简介
1.1 深度学习简介 1
1.2 PyTorch的由来 2
1.2.1 深度学习框架回顾 2
1.2.2 PyTorch前身:Torch7 4
1.2.3 Torch7的重生 5
1.3 PyTorch与TensorFlow对比 5
1.3.1 TensorFlow简介 6
1.3.2 动静之争 6
1.3.3 二者借鉴融合 7
1.3.4 PyTorch的优势 7
1.4 PyTorch发展现状 8
1.4.1 主要版本特点回顾 8
1.4.2 准备工作 8
第2章 PyTorch基础计算
2.1 PyTorch核心基础概念:张量Tensor 11
2.1.1 Tensor基本介绍 11
2.1.2 Tensor数学运算操作 15
2.1.3 Tensor索引分片合并变换操作 20
2.1.4 Tensor类成员方法 22
2.1.5 在GPU上计算 24
2.2 PyTorch可微编程核心:自动微分Autograd 25
2.2.1 PyTorch自动微分简介 25
2.2.2 可微分张量 25
2.2.3 利用自动微分求梯度 26
2.2.4 Function:自动微分实现基础 29
2.2.5 注意事项 31
2.3 PyTorch应用实战一:实现卷积操作 34
2.3.1 卷积操作 34
2.3.2 利用张量操作实现卷积 36
2.4 PyTorch应用实战二:实现卷积神经网络进行图像分类 38
第3章 PyTorch构建神经网络
3.1 PyTorch神经网络计算核心:torch.nn 43
3.1.1 nn.Module概述 43
3.1.2 结构化构建神经网络 47
3.1.3 经典神经网络层介绍 49
3.1.4 函数式操作nn.functional 53
3.2 PyTorch优化器 55
3.2.1 torch.optim概述 55
3.2.2 经典优化器介绍 56
3.2.3 学习率调整 57
3.3 PyTorch应用实战一:实现二值化神经网络 59
3.3.1 二值化网络BinaryNet概述 59
3.3.2 具体实现 60
3.4 PyTorch应用实战二:利用LSTM实现文本情感分类 63
3.4.1 文本情感分类 63
3.4.2 具体实现 65
第4章 基于PyTorch构建复杂应用
4.1 PyTorch数据加载 70
4.1.1 数据预处理:torchvision.transforms 70
4.1.2 数据加载:torch.utils.data 73
4.2 PyTorch模型搭建 77
4.2.1 经典模型复用与分享:torchvision.models 78
4.2.2 模型加载与保存 79
4.2.3 导出为ONNX格式 85
4.3 训练过程中日志记录与可视化 89
4.4 PyTorch应用实战一:在CIFAR10数据集进行神经网络结构搜索 93
4.4.1 可微分网络架构搜索DARTS介绍 94
4.4.2 简化问题建模:以ResNet为例 95
4.4.3 具体实现 96
4.5 PyTorch应用实战二:在ImageNet数据集进行弱监督物体定位 108
4.5.1 GradCAM解释显著图方法介绍 108
4.5.2 弱监督物体定位任务 109
4.5.3 具体实现 110
第5章 PyTorch高级技巧与实战应用
5.1 PyTorch并行计算 118
5.1.1 大规模数据集加载 118
5.1.2 模型的高效并行计算 122
5.1.3 加速模型计算和减少显存使用 125
5.2 扩展PyTorch 126
5.2.1 利用C++和CUDA实现自定义算子 126
5.2.2 利用TorchScript导出PyTorch模型 136
5.3 丰富的PyTorch资源介绍 145
5.4 PyTorch应用实战一:在ImageNet上训练MobileNet-V2网络 146
5.4.1 MobileNet-V2网络介绍 146
5.4.2 具体实现 147
5.5 PyTorch应用实战二:利用CUDA扩展实现MixConv算子 157
5.5.1 MixConv算子介绍 157
5.5.2 借鉴Depthwise卷积实现思路 158
5.5.3 具体实现 160
第6章 PyTorch完整实战讲解——网络剪枝应用
6.1 网络剪枝介绍 169
6.1.1 剪枝方法分类 169
6.1.2 基于权重通道重要性的结构化剪枝 170
6.1.3 问题定义与建模 170
6.2 具体实现思路 171
6.2.1 如何附属控制门值 171
6.2.2 剪枝结构搜索 172
6.2.3 剪枝模型训练 174
6.3 完整代码实现 175
6.3.1 模型搭建 176
6.3.2 剪枝器实现 181
6.3.3 学习控制门变量 183
6.3.4 剪枝模型 187
6.3.5 训练模型 189
6.3.6 规模化启动训练任务 193
6.4 实验结果 198
参考文献