關(guān)于我們
書單推薦
新書推薦
|
深度學(xué)習框架PyTorch:入門與實踐(第2版) 讀者對象:本書既適合深度學(xué)習的初學(xué)者及第一次接觸PyTorch的研究人員閱讀,也適合有一定PyTorch使用經(jīng)驗的用戶閱讀,幫助他們建立對PyTorch的基本認識,提高使用PyTorch框架解決實際問題的能力。
本書從多維數(shù)組Tensor開始,循序漸進地介紹PyTorch各方面的基礎(chǔ)知識,并結(jié)合深度學(xué)習中的經(jīng)典應(yīng)用,帶領(lǐng)讀者從零開始完成幾個經(jīng)典而有趣的實際項目,包括動漫頭像生成、風格遷移、自動寫詩以及目標檢測。本書還介紹了PyTorch的幾個高級擴展,包括向量化計算、分布式加速以及CUDA擴展。本書既適合深度學(xué)習的初學(xué)者及第一次接觸PyTorch的研究人員閱讀,也適合有一定PyTorch使用經(jīng)驗的用戶閱讀,幫助他們建立對PyTorch的基本認識,提高使用PyTorch框架解決實際問題的能力。
王博:北京郵電大學(xué)模式識別實驗室在讀碩士研究生,主要研究方向為深度學(xué)習與計算機視覺。Python程序員,PyTorch推廣者。作為助教為大一學(xué)生講解《人工智能導(dǎo)論》實驗課程,受到同學(xué)們的好評。陳云:多倫多大學(xué)在讀計算機博士生,現(xiàn)任waabi.ai研究員。曾在Uber ATG從事無人駕駛研究,獲得CVPR2021最佳論文提名。
第 1 章 深度學(xué)習框架簡介 1
1.1 深度學(xué)習框架編年史. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 PyTorch 與 TensorFlow 的對比 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.3 為什么選擇 PyTorch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 第 2 章 PyTorch 快速入門 11 2.1 安裝與配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1.1 在 Linux 系統(tǒng)下安裝 PyTorch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1.2 在 Windows 系統(tǒng)下安裝 PyTorch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1.3 學(xué)習工具介紹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.1.4 服務(wù)器開發(fā)介紹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.2 PyTorch 快速入門指南 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.2.1 Tensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.2.2 autograd:自動微分. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.2.3 神經(jīng)網(wǎng)絡(luò) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.2.4 小試牛刀:CIFAR-10 分類 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.3 小結(jié). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 第 3 章 Tensor 和 autograd 43 3.1 Tensor 基礎(chǔ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.1.1 Tensor 的基本操作. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.1.2 命名張量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 3.1.3 Tensor 與 NumPy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.1.4 Tensor 的基本結(jié)構(gòu). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 3.1.5 變形記:N 種改變 Tensor 形狀的方法 . . . . . . . . . . . . . . . . . . . . . . . . . 65 3.2 小試牛刀:線性回歸. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 3.3 autograd 和計算圖基礎(chǔ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 3.3.1 autograd 的用法:requires_grad 與 backward . . . . . . . . . . . . . . . . . . . . . 73 3.3.2 autograd 的原理:計算圖 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 3.3.3 擴展 autograd:Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 3.3.4 小試牛刀:利用 autograd 實現(xiàn)線性回歸 . . . . . . . . . . . . . . . . . . . . . . . . 84 3.4 小結(jié). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 第 4 章 神經(jīng)網(wǎng)絡(luò)工具箱 nn 89 4.1 nn.Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 4.2 常用的神經(jīng)網(wǎng)絡(luò)層 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.2.1 圖像相關(guān)層 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.2.2 激活函數(shù) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 4.2.3 構(gòu)建神經(jīng)網(wǎng)絡(luò) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 4.2.4 循環(huán)神經(jīng)網(wǎng)絡(luò) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 4.2.5 損失函數(shù) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 4.3 nn.functional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 4.3.1 nn.functional 與 nn.Module 的區(qū)別 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 4.3.2 采樣函數(shù) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 4.4 初始化策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 4.5 優(yōu)化器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 4.6 nn.Module 深入分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 4.7 小試牛刀:搭建 ResNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 4.8 小結(jié). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 第 5 章 PyTorch 中常用的工具 121 5.1 數(shù)據(jù)處理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 5.1.1 Dataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 5.1.2 DataLoader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 5.2 預(yù)訓(xùn)練模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 5.3 可視化工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 5.3.1 TensorBoard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 5.3.2 Visdom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 5.4 使用 GPU 加速:CUDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 5.5 小結(jié). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 小結(jié). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 第 7 章 PyTorch 與 Multi-GPU 187 7.1 單機多卡并行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 7.1.1 并行原理介紹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 7.1.2 DataParallel 使用示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 7.2 分布式系統(tǒng) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 7.2.1 分布式系統(tǒng)的基本概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 7.2.2 分布式消息傳遞接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 7.2.3 小試牛刀:分布式計算實操演練 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 7.3 PyTorch 分布式訓(xùn)練 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 7.3.1 使用 MPI 進行分布式訓(xùn)練 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 7.3.2 使用 torch.distributed 進行分布式訓(xùn)練 . . . . . . . . . . . . . . . . . . . . . . . . . 201 7.3.3 使用 Horovod 進行分布式訓(xùn)練 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 7.4 分布式訓(xùn)練中的注意事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 7.4.1 保持同步 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 7.4.2 進程協(xié)作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 7.4.3 常用調(diào)試技巧 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 7.5 進階擴展 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 7.6 小結(jié). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 之間的關(guān)系 . . . . . . . . . . . . . . . . . 222 8.3 小結(jié). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 第 9 章 PyTorch 實戰(zhàn)指南 227 9.1 編程實戰(zhàn):貓和狗二分類 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.1.1 比賽介紹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.1.2 文件組織結(jié)構(gòu) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.1.3 __init__.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 9.1.4 數(shù)據(jù)加載 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 9.1.5 模型定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 9.1.6 工具函數(shù) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.1.7 配置文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 9.1.8 main.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.1.9 使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 9.1.10 爭議 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 9.2 PyTorch 調(diào)試指南 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 9.2.1 ipdb 介紹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 9.2.2 在 PyTorch 中調(diào)試 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 9.3 小結(jié). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 第 10 章 AI 插畫師:生成對抗網(wǎng)絡(luò) 255 10.1 GAN 原理簡介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 10.2 使用 GAN 生成動漫人物頭像 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 10.3 實驗結(jié)果分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 10.4 小結(jié). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 第 11 章 AI 詩人:用 Transformer 寫詩 271 11.1 自然語言處理的基礎(chǔ)知識 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 實現(xiàn) Transformer 寫詩 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 11.5 小結(jié). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 第 12 章 AI 藝術(shù)家:神經(jīng)網(wǎng)絡(luò)風格遷移 295 12.1 風格遷移原理介紹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 12.2 使用 PyTorch 實現(xiàn)風格遷移 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 12.3 實驗結(jié)果分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 12.4 小結(jié). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 第 13 章 CenterNet:目標檢測 311 13.1 目標檢測概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 13.2 CenterNet 原理介紹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 13.3 使用 PyTorch 實現(xiàn) CenterNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 13.3.1 使用 pycocotools 加載 COCO 數(shù)據(jù)集 . . . . . . . . . . . . . . . . . . . . . . . . . . 318 13.3.2 搭建 CenterNet 網(wǎng)絡(luò) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 13.4 實驗結(jié)果分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 13.5 小結(jié). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 參考文獻 331
你還可能感興趣
我要評論
|