目錄
第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的優(yōu)勢 7
1.4 PyTorch發(fā)展現狀 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應用實戰(zhàn)一:實現卷積操作 34
2.3.1 卷積操作 34
2.3.2 利用張量操作實現卷積 36
2.4 PyTorch應用實戰(zhàn)二:實現卷積神經網絡進行圖像分類 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優(yōu)化器 55
3.2.1 torch.optim概述 55
3.2.2 經典優(yōu)化器介紹 56
3.2.3 學習率調整 57
3.3 PyTorch應用實戰(zhàn)一:實現二值化神經網絡 59
3.3.1 二值化網絡BinaryNet概述 59
3.3.2 具體實現 60
3.4 PyTorch應用實戰(zhàn)二:利用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應用實戰(zhàn)一:在CIFAR10數據集進行神經網絡結構搜索 93
4.4.1 可微分網絡架構搜索DARTS介紹 94
4.4.2 簡化問題建模:以ResNet為例 95
4.4.3 具體實現 96
4.5 PyTorch應用實戰(zhàn)二:在ImageNet數據集進行弱監(jiān)督物體定位 108
4.5.1 GradCAM解釋顯著圖方法介紹 108
4.5.2 弱監(jiān)督物體定位任務 109
4.5.3 具體實現 110
第5章 PyTorch高級技巧與實戰(zhàn)應用
5.1 PyTorch并行計算 118
5.1.1 大規(guī)模數據集加載 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應用實戰(zhàn)一:在ImageNet上訓練MobileNet-V2網絡 146
5.4.1 MobileNet-V2網絡介紹 146
5.4.2 具體實現 147
5.5 PyTorch應用實戰(zhàn)二:利用CUDA擴展實現MixConv算子 157
5.5.1 MixConv算子介紹 157
5.5.2 借鑒Depthwise卷積實現思路 158
5.5.3 具體實現 160
第6章 PyTorch完整實戰(zhàn)講解——網絡剪枝應用
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 規(guī)?;瘑佑柧毴蝿?193
6.4 實驗結果 198
參考文獻