深入理解PyTorch Mastering PyTorch : Create and deploy deep learning models from CNNs to multimodal models, LLMs, and beyond, 2/e

[印]阿施·拉賈漢·賈 著 劉禕 譯

  • 深入理解PyTorch-preview-1
  • 深入理解PyTorch-preview-2
  • 深入理解PyTorch-preview-3
深入理解PyTorch-preview-1

商品描述

《深入理解PyTorch》詳細闡述了與 PyTorch 相關的基本解決方案,主要包括深度捲積神經網絡架構、結合 CNN 和LSTM、深度循環模型架構、高級混合模型、圖神經網絡、使用 PyTorch 生成音樂和文本、神經風格遷移、深度捲積 GAN、利用擴散生成圖像、深度強化學習、模型訓練優化、將 PyTorch 模型投入生產、移動設備上的 PyTorch、使用 PyTorch 進行快速原型開發、PyTorch 和 AutoML、PyTorch 與可解釋人工智能、推薦系統與 PyTorch、PyTorch 和 Hugging Face 等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。

作者簡介

阿施·拉賈漢·賈,擁有IIT Roorkee(印度)電氣工程學士學位,EPFL(瑞士)計算機科學碩士學位。EPFL(瑞士)計算機科學碩士學位,Quantic商學院(華盛頓)MBA學位,並都以優異成績畢業。Ashish曾在甲骨文、索尼及初創科技公司等多家科技公司工作,在Revolut擔任機器學習工程師。

目錄大綱

目錄

第 1 章 PyTorch 深度學習概述 1

1.1 深度學習回顧 2

1.2 優化計劃 10

1.3 PyTorch 庫與 TensorFlow 的對比 13

1.3.1 張量模塊 14

1.3.2 PyTorch 模塊 17

1.3.3 使用 PyTorch 訓練神經網絡 20

1.4 本章小結 30

1.5 參考文獻 30

第 2 章 深度捲積神經網絡架構 31

2.1 為什麽 CNN 如此強大 31

2.2 CNN 架構的演變 34

2.3 從頭開始開發 LeNet 36

2.3.1 使用 PyTorch 構建 LeNet 38

2.3.2 訓練 LeNet 43

2.3.3 測試 LeNet 44

2.4 微調 AlexNet 模型 46

2.5 運行預訓練的 VGG 模型 56

2.6 GoogLeNet 和 Inception v3 58

2.6.1 Inception 模塊 58

2.6.2 1×1 捲積 61

2.6.3 全局平均池化 61

2.6.4 輔助分類器 61

2.6.5 Inception v3 62

2.7 ResNet 和 DenseNet 架構 65

2.7.1 ResNet 65

2.7.2 DenseNet 68

2.8 EfficientNet 和 CNN 架構的未來 72

2.9 本章小結 74

2.10 參考文獻 74

第 3 章 結合 CNN 和 LSTM 75

3.1 構建帶有 CNN 和 LSTM 的神經網絡 75

3.2 使用 PyTorch 構建圖像字幕生成器 77

3.2.1 下載圖像字幕數據集 78

3.2.2 預處理字幕(文本)數據 79

3.2.3 預處理圖像數據 81

3.2.4 定義圖像字幕數據加載器 82

3.2.5 定義 CNN-LSTM 模型 84

3.2.6 訓練 CNN-LSTM 模型 87

3.2.7 使用訓練好的模型生成圖像字幕 90

3.3 本章小結 92

3.4 參考文獻 92

第 4 章 深度循環模型架構 93

4.1 探索循環網絡的演變 94

4.1.1 循環神經網絡的類型 94

4.1.2 RNN 96

4.1.3 雙向 RNN 97

4.1.4 LSTM 98

4.1.5 擴展和雙向 LSTM 100

4.1.6 多維 RNN 100

4.1.7 堆疊 LSTM 100

4.1.8 GRU 101

4.1.9 網格 LSTM 101

4.1.10 門控正交循環單元 102

4.2 訓練 RNN 進行情感分析 102

4.2.1 加載和預處理文本數據集 103

4.2.2 實例化並訓練模型 108

4.3 構建雙向 LSTM 113

4.3.1 加載和預處理文本數據集 113

4.3.2 實例化並訓練 LSTM 模型 115

4.4 GRU 和基於註意力的模型 117

4.4.1 GRU 和 PyTorch 117

4.4.2 基於註意力的模型 118

4.5 本章小結 120

4.6 參考文獻 120

第 5 章 高級混合模型 121

5.1 構建用於語言建模的 transformer 模型 121

5.1.1 語言建模回顧 122

5.1.2 transformer 模型架構 122

5.1.3 在 PyTorch 中定義 transformer 模型 127

5.2 從頭開始開發 RandWireNN 模型 133

5.2.1 理解 RandWireNN 133

5.2.2 利用 PyTorch 開發 RandWireNN 134

5.3 本章小結 143

5.4 參考文獻 143

第 6 章 圖神經網絡 145

6.1 圖神經網絡簡介 145

6.1.1 圖神經網絡的直觀理解 146

6.1.2 在圖數據上使用常規 NN 147

6.1.3 通過計算圖理解 GNN 的強大能力 148

6.2 圖學習任務的類型 150

6.2.1 節點級任務 151

6.2.2 邊級任務 152

6.2.3 圖級任務 153

6.3 回顧突出的 GNN 模型 153

6.3.1 GCN 中的圖捲積 154

6.3.2 在圖上使用註意力機制的 GAT 156

6.3.3 執行圖採樣的 GraphSAGE 157

6.3.4 使用PyTorch Geometric 構建圖捲積網絡模型 159

6.3.5 加載和探索引用網絡數據集 159

6.3.6 構建一個簡單的基於神經網絡的節點分類器 162

6.3.7 構建用於節點分類的 GCN 模型 167

6.4 使用 PyTorch Geometric 訓練 GAT 模型 171

6.5 本章小結 176

6.6 參考文獻 176

第 7 章 使用 PyTorch 生成音樂和文本 177

7.1 使用 PyTorch 構建基於 transformer 的文本生成器 177

7.1.1 訓練基於 transformer 的語言模型 177

7.1.2 保存和加載語言模型 178

7.1.3 使用語言模型生成文本 179

7.2 使用 GPT 模型作為文本生成器 180

7.2.1 使用 GPT-2 實現即用型文本生成 180

7.2.2 使用 PyTorch 的文本生成策略 181

7.2.3 使用 GPT-3 實現文本生成 187

7.3 使用 PyTorch 並通過 LSTM 生成 MIDI 音樂 189

7.3.1 加載 MIDI 音樂數據 189

7.3.2 定義 LSTM 模型和訓練過程 193

7.3.3 訓練並測試音樂生成模型 195

7.4 本章小結 198

7.5 參考文獻 198

第 8 章 神經風格遷移 199

8.1 如何在圖像之間遷移風格 200

8.2 使用 PyTorch 實現神經風格遷移 203

8.2.1 加載內容和風格圖像 203

8.2.2 加載並修剪預訓練的 VGG19 模型 204

8.2.3 構建神經風格遷移模型 206

8.2.4 訓練風格遷移模型 207

8.2.5 嘗試風格遷移系統 211

8.3 本章小結 214

8.4 參考文獻 214

第 9 章 深度捲積 GAN 215

9.1 定義生成器和鑒別器網絡 216

9.2 使用 PyTorch 訓練 DCGAN 218

9.2.1 定義生成器 219

9.2.2 定義鑒別器 221

9.2.3 加載圖像數據集 222

9.2.4 DCGAN 的訓練循環 223

9.3 使用 GAN 進行風格遷移 227

9.3.1 pix2pix 架構 227

9.3.2 pix2pix 生成器 229

9.3.3 pix2pix 鑒別器 233

9.4 本章小結 235

9.5 參考文獻 235

第 10 章 利用擴散生成圖像 237

10.1 理解使用擴散的圖像生成 237

10.1.1 擴散的工作方式 239

10.1.2 訓練一個前向擴散模型 239

10.1.3 執行反向擴散或去噪 242

10.2 訓練一個用於圖像生成的擴散模型 244

10.2.1 使用 Hugging Face 數據集加載數據集 244

10.2.2 使用 torchvision 轉換處理數據集 247

10.2.3 使用 diffusers 為圖像添加噪聲 248

10.2.4 定義 UNet 模型 250

10.2.5 訓練 UNet 模型 251

10.3 使用擴散的文本到圖像生成 256

10.3.1 將文本輸入編碼為嵌入向量 257

10.3.2 在(條件)UNet 模型中攝入額外的文本數據 258

10.4 使用 Stable Diffusion 模型從文本生成圖像 260

10.5 本章小結 263

10.6 參考文獻 263

第 11 章 深度強化學習 265

11.1 回顧強化學習概念 266

11.1.1 算法類型 268

11.1.2 基於模型的強化學習算法 269

11.1.3 無模型的強化學習算法 269

11.2 探討 Q 學習 270

11.3 深度 Q 學習 274

11.3.1 使用兩個獨立的 DNN 275

11.3.2 經驗回放緩沖區 275

11.4 在 PyTorch 中構建 DQN 模型 276

11.4.1 初始化主 CNN 模型和目標 CNN 模型 276

11.4.2 定義經驗回放緩沖區 279

11.4.3 設置環境 279

11.4.4 定義 CNN 優化函數 281

11.4.5 管理和運行回合 282

11.4.6 訓練 DQN 模型以學習 Pong 284

11.5 本章小結 287

11.6 參考文獻 288

第 12 章 模型訓練優化 289

12.1 PyTorch 分佈式訓練 289

12.1.1 以常規方式訓練 MNIST 模型 290

12.1.2 分佈式訓練 MNIST 模型 292

12.2 CUDA 在 GPU 上進行分佈式訓練 300

12.2.1 自動混合精度訓練 302

12.2.2 在 GPU 上的常規模型訓練 302

12.2.3 在GPU 上進行混合精度訓練 304

12.3 本章小結 307

12.4 參考文獻 307

第 13 章 將 PyTorch 模型投入生產 309

13.1 PyTorch 中的模型服務 309

13.1.1 創建 PyTorch 模型推理管道 310

13.1.2 保存和加載訓練模型 310

13.1.3 構建推理管道 312

13.2 構建基礎模型服務器 315

13.2.1 使用Flask 編寫基礎應用程序 316

13.2.2 使用 Flask 構建我們的模型服務器 317

13.2.3 使用 Flask 服務器運行預測 319

13.3 創建模型微服務 321

13.4 使用 TorchServe 提供 PyTorch 模型服務 326

13.4.1 安裝 TorchServe 326

13.4.2 啟動並使用 TorchServe 服務器 326

13.5 導出使用 TorchScript 和 ONNX 的通用 PyTorch 模型 330

13.5.1 理解 TorchScript 的實用性 330

13.5.2 使用 TorchScript 進行模型追蹤 331

13.5.3 使用 TorchScript 進行模型腳本化 334

13.6 在 C++中運行 PyTorch 模型 336

13.7 使用 ONNX 導出 PyTorch 模型 340

13.8 在雲端部署 PyTorch 模型 342

13.8.1 使用 PyTorch 與 AWS 342

13.8.2 使用 AWS 實例部署 PyTorch 模型 342

13.8.3 使用 TorchServe 與 Amazon SageMaker 344

13.8.4 在 Google Cloud 上部署 PyTorch 模型 345

13.8.5 使用 Azure 部署 PyTorch 模型 346

13.8.6 使用 Azure 的 DSVM 347

13.8.7 Azure 機器學習服務 347

13.9 本章小結 348

13.10 參考文獻 348

第 14 章 移動設備上的 PyTorch 353

14.1 在 Android 上部署 PyTorch 模型 354

14.1.1 將 PyTorch 模型轉換為適合移動設備的格式 354

14.1.2 設置 Android 應用程序開發環境 354

14.2 在 Android 應用程序中使用手機相機捕捉圖像 357

14.2.1 在應用啟動時啟用相機 358

14.2.2 在相機捕獲的圖像上運行機器學習模型推理 362

14.2.3 在 Android 移動設備上啟動應用程序 366

14.3 在 iOS 上構建 PyTorch 應用 370

14.3.1 設置 iOS 開發環境 371

14.3.2 在 iOS 應用中使用手機攝像頭捕獲圖像 373

14.3.3 在攝像頭捕獲的圖像上運行機器學習模型推理 375

14.4 本章小結 380

14.5 參考文獻 380

第 15 章 使用 PyTorch 進行快速原型開發 383

15.1 使用 fastai 在幾分鐘內設置模型訓練 384

15.1.1 設置 fastai 和加載數據 384

15.1.2 使用 fastai 訓練 MNIST 模型 386

15.1.3 使用 fastai 評估和解釋模型 387

15.2 使用 PyTorch Lightning 在硬件上訓練模型 389

15.2.1 在 PyTorch Lightning 中定義模型組件 390

15.2.2 使用 PyTorch Lightning 訓練和評估模型 391

15.3 使用 PyTorch 分析器分析 MNIST 模型推理 394

15.3.1 在 CPU 上進行分析 394

15.3.2 在 GPU 上分析模型推理 399

15.4 本章小結 401

15.5 參考文獻 402

第 16 章 PyTorch 和 AutoML 403

16.1 使用 AutoML 尋找最佳神經架構 403

16.1.1 使用 Auto-PyTorch 實現最優 MNIST 模型搜索 404

16.1.2 加載 MNIST 數據集 404

16.1.3 使用 Auto-PyTorch 進行神經架構搜索 405

16.1.4 可視化最優 AutoML 模型 406

16.2 使用 Optuna 進行超參數搜索 410

16.2.1 定義模型架構和加載數據集 410

16.2.2 定義模型訓練程序和優化計劃 412

16.2.3 運行 Optuna 的超參數搜索 413

16.3 本章小結 416

16.4 參考文獻 416

第 17 章 PyTorch 與可解釋人工智能 419

17.1 PyTorch 中的模型可解釋性 419

17.1.1 手寫數字分類器訓練 420

17.1.2 可視化模型的捲積濾波器 422

17.1.3 可視化模型的特徵圖 424

17.2 使用 Captum 解釋模型 426

17.2.1 設置Captum 426

17.2.2 探索 Captum 的可解釋性工具 427

17.3 本章小結 431

17.4 參考文獻 431

第 18 章 推薦系統與 PyTorch 433

18.1 利用深度學習構建推薦系統 434

18.1.1 理解電影推薦系統數據集 434

18.1.2 理解基於嵌入的推薦系統 435

18.2 理解和處理 MovieLens 數據集 437

18.2.1 下載 MovieLens 數據集 437

18.2.2 加載和分析 MovieLens 數據集 438

18.2.3 處理 MovieLens 數據集 440

18.2.4 創建 MovieLens 數據加載器 442

18.3 訓練和評估推薦系統模型 443

18.3.1 定義 EmbeddingNet 架構 443

18.3.2 訓練 EmbeddingNet 446

18.3.3 評估訓練好的 EmbeddingNet 模型 448

18.4 使用訓練好的模型構建推薦系統 449

18.5 本章小結 452

18.6 參考文獻 452

第 19 章 PyTorch 和 Hugging Face 453

19.1 在 PyTorch 背景下理解 Hugging Face 453

19.1.1 探索與 PyTorch 相關的 Hugging Face 組件 453

19.1.2 將 Hugging Face 與 PyTorch 集成 455

19.2 使用 Hugging Face Hub 獲取預訓練模型 457

19.3 使用 Hugging Face 數據集庫與 PyTorch 460

19.4 使用 Accelerate 加速 PyTorch 模型訓練 464

19.5 使用 Optimum 優化 PyTorch 模型部署 466

19.6 本章小結 470

19.7 參考文獻 471