本書以PyTorch作為深度學(xué)習(xí)框架,主要包括4部分。第1部分(第1、2章),主要概述PyTorch基礎(chǔ)知識與常見深度學(xué)習(xí)算法實現(xiàn),例如,CNN、LSTM,即CNN-LSTM;第2部分(第3~5章)高級神經(jīng)網(wǎng)絡(luò)實現(xiàn),主要包括常見的深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu),例如CNN、RNN及最新的Transformer等模型;第3部分(第6~9章)生成式AI和深度強(qiáng)化學(xué)習(xí),主要包括GAN、GPT和DQN等算法;第4部分(第10~14章)生產(chǎn)中PyTorch落地的幾個關(guān)鍵性主題,分布式訓(xùn)練、自動機(jī)器學(xué)習(xí)管道構(gòu)建和硬件快速部署。
Ashish Ranjan Jha擁有IIT Roorkee(印度)電氣工程學(xué)士學(xué)位,EPFL(瑞士)計算機(jī)科學(xué)碩士學(xué)位。EPFL(瑞士)計算機(jī)科學(xué)碩士學(xué)位,Quantic商學(xué)院(華盛頓)MBA學(xué)位,并都以優(yōu)異成績畢業(yè)。Ashish曾在甲骨文、索尼及初創(chuàng)科技公司等多家科技公司工作,在Revolut擔(dān)任機(jī)器學(xué)習(xí)工程師
郭濤,四川省農(nóng)業(yè)科學(xué)院遙感應(yīng)用研究所智慧農(nóng)業(yè)科學(xué)技術(shù)中心、遙感監(jiān)測(糧食安全)研究中心工程師,TIT Lab發(fā)起人,主要從事機(jī)器學(xué)習(xí)與模式識別、地理人工智能(GeoAI)與時空大數(shù)據(jù)挖掘與分析、智能機(jī)器人技術(shù)和軟件工程技術(shù)等前沿交叉研究!稄(fù)雜性思考:復(fù)雜性科學(xué)與計算模型》和《神經(jīng)網(wǎng)絡(luò)實戰(zhàn)》等譯者。目前發(fā)表學(xué)術(shù)論文12篇,申請軟件著作權(quán)12項,參與編寫教材3本,譯著5本。
第1部分 PyTorch概述
第 1 章 使用PyTorch概述深度學(xué)習(xí) 003
1.1 技術(shù)要求 005
1.2 回顧深度學(xué)習(xí) 005
1.2.1 激活函數(shù) 011
1.2.2 優(yōu)化模式 014
1.3 探索PyTorch庫 018
1.3.1 PyTorch模塊 019
1.3.2 Tensor模塊 021
1.4 使用PyTorch訓(xùn)練神經(jīng)網(wǎng)絡(luò) 025
1.5 總結(jié) 033
第 2 章 結(jié)合CNN和LSTM 035
2.1 技術(shù)要求 036
2.2 使用CNN和LSTM構(gòu)建神經(jīng)網(wǎng)絡(luò) 036
2.3 使用PyTorch構(gòu)建圖像文字描述生成器 038
2.3.1 下載圖像文字描述數(shù)據(jù)集 039
2.3.2 預(yù)處理文字描述(文本)數(shù)據(jù) 041
2.3.3 預(yù)處理圖像數(shù)據(jù) 043
2.3.4 定義圖像文字描述數(shù)據(jù)加載器 045
2.3.5 定義CNN-LSTM模型 047
2.3.6 訓(xùn)練CNN-LSTM模型 050
2.3.7 使用已經(jīng)訓(xùn)練的模型生成圖像文字描述 054
2.4 總結(jié) 057
第2部分 使用高級神經(jīng)網(wǎng)絡(luò)架構(gòu)
第 3 章 深度CNN架構(gòu) 061
3.1 技術(shù)要求 062
3.2 為什么CNN如此強(qiáng)大? 062
3.3 CNN架構(gòu)的演變 065
3.4 從零開始開發(fā)LeNet 068
3.4.1 使用PyTorch構(gòu)建LeNet 070
3.4.2 訓(xùn)練LeNet 076
3.4.3 測試LeNet 077
3.5 微調(diào)AlexNet模型 079
3.6 運(yùn)行預(yù)訓(xùn)練的VGG模型 090
3.7 探索GoogLeNet和Inception v3 094
3.7.1 Inception模塊 094
3.7.2 1×1卷積 097
3.7.3 全局平均池化 097
3.7.4 輔助分類器 097
3.7.5 Inception v3 099
3.8 討論ResNet和DenseNet架構(gòu) 102
3.9 了解EfficientNets和CNN架構(gòu)的未來 109
3.10 總結(jié) 111
第 4 章 深度循環(huán)模型架構(gòu) 113
4.1 技術(shù)要求 114
4.2 探索循環(huán)網(wǎng)絡(luò)的演變 115
4.2.1 循環(huán)神經(jīng)網(wǎng)絡(luò)的類型 115
4.2.2 RNN 117
4.2.3 雙向RNN 118
4.2.4 LSTM 119
4.2.5 擴(kuò)展和雙向LSTM 121
4.2.6 多維RNN 121
4.2.7 堆疊LSTM 122
4.2.8 GRU 123
4.2.9 Grid LSTM 124
4.2.10 門控正交循環(huán)單元 124
4.3 訓(xùn)練RNN進(jìn)行情感分析 124
4.3.1 加載和預(yù)處理文本數(shù)據(jù)集 125
4.3.2 實例化和訓(xùn)練模型 131
4.4 構(gòu)建雙向LSTM 137
4.4.1 加載和預(yù)處理文本數(shù)據(jù)集 137
4.4.2 實例化和訓(xùn)練LSTM模型 139
4.5 討論GRU和基于注意力的模型 141
4.5.1 GRU和PyTorch 142
4.5.2 基于注意力的模型 142
4.6 總結(jié) 144
第 5 章 混合高級模型 146
5.1 技術(shù)要求 147
5.2 構(gòu)建用于語言建模的Transformer模型 147
5.2.1 回顧語言建模 147
5.2.2 理解Transforms模型架構(gòu) 148
5.3 從頭開始開發(fā)RandWireNN模型 160
5.3.1 理解RandWireNN 161
5.3.2 使用PyTorch開發(fā)RandWireNN 162
5.4 總結(jié) 174
第3部分 生成模型和深度強(qiáng)化學(xué)習(xí)
第 6 章 使用PyTorch生成音樂和文本 179
6.1 技術(shù)要求 180
6.2 使用PyTorch構(gòu)建基于Transformer的文本生成器 180
6.2.1 訓(xùn)練基于Transformer的語言模型 181
6.2.2 保存和加載語言模型 182
6.2.3 使用語言模型生成文本 182
6.3 使用預(yù)訓(xùn)練的GPT-2模型作為文本生成器 184
6.3.1 使用GPT-2生成便捷的文本 184
6.3.2 使用PyTorch的文本生成策略 185
6.4 使用PyTorch與LSTM生成MIDI音樂 192
6.4.1 加載MIDI音樂數(shù)據(jù) 193
6.4.2 定義LSTM模型和訓(xùn)練例程 197
6.4.3 訓(xùn)練和測試音樂生成模型 199
6.5 總結(jié) 202
第 7 章 神經(jīng)風(fēng)格轉(zhuǎn)移 204
7.1 技術(shù)要求 205
7.2 理解如何在圖像之間傳遞風(fēng)格 205
7.3 使用PyTorch實現(xiàn)神經(jīng)風(fēng)格遷移 209
7.3.1 加載內(nèi)容圖像和風(fēng)格圖像 209
7.3.2 構(gòu)建神經(jīng)風(fēng)格遷移模型 213
7.3.3 訓(xùn)練風(fēng)格遷移模型 214
7.3.4 嘗試風(fēng)格遷移系統(tǒng) 219
7.4 總結(jié) 222
第 8 章 深度卷積GAN 224
8.1 技術(shù)要求 225
8.2 定義生成器和判別器網(wǎng)絡(luò) 226
8.3 使用PyTorch訓(xùn)練DCGAN 229
8.3.1 定義生成器 229
8.3.2 定義判別器 232
8.3.3 加載圖像數(shù)據(jù)集 233
8.3.4 DCGAN的訓(xùn)練循環(huán) 234
8.4 使用GAN進(jìn)行風(fēng)格遷移 239
8.5 總結(jié) 248
第 9 章 深度強(qiáng)化學(xué)習(xí) 249
9.1 技術(shù)要求 250
9.2 回顧強(qiáng)化學(xué)習(xí)概念 251
9.2.1 強(qiáng)化學(xué)習(xí)算法類型 253
9.3 討論Q-學(xué)習(xí) 256
9.4 理解深度Q-學(xué)習(xí) 261
9.4.1 使用兩個獨立的DNN 262
9.4.2 經(jīng)驗回放緩沖器 262
9.5 在PyTorch中構(gòu)建DQN模型 263
9.5.1 初始化主和目標(biāo)CNN模型 263
9.5.2 定義經(jīng)驗回放緩沖區(qū) 266
9.5.3 設(shè)置環(huán)境 267
9.5.4 定義CNN優(yōu)化函數(shù) 269
9.5.5 管理和運(yùn)行迭代 270
9.5.6 訓(xùn)練DQN模型以學(xué)習(xí)Pong 273
9.6 總結(jié) 277
第4部分 生產(chǎn)系統(tǒng)中的PyTorch
第 10 章 將PyTorch模型投入生產(chǎn)中 281
10.1 技術(shù)要求 282
10.2 PyTorch中的模型服務(wù) 283
10.2.1 創(chuàng)建PyTorch模型推理流水線 283
10.2.2 構(gòu)建基本模型服務(wù)器 290
10.2.3 創(chuàng)建模型微服務(wù) 298
10.3 使用TorchServe為PyTorch模型提供服務(wù) 304
10.3.1 安裝TorchServe 305
10.3.2 啟動和使用TorchServe服務(wù)器 305
10.4 使用TorchScript和ONNX導(dǎo)出通用PyTorch模型 310
10.4.1 了解TorchScript的功能 310
10.4.2 使用TorchScript進(jìn)行模型跟蹤 311
10.4.3 使用TorchScript編寫模型腳本 315
10.4.4 在C++中運(yùn)行PyTorch模型 318
10.4.5 使用ONNX導(dǎo)出PyTorch模型 322
10.5 在云端提供PyTorch模型 325
10.5.1 將PyTorch與AWS結(jié)合使用 326
10.5.2 在Google Cloud上提供PyTorch模型 330
10.5.3 使用Azure為PyTorch模型提供服務(wù) 332
10.6 總結(jié) 334
參考資料 335
第 11 章 分布式訓(xùn)練 337
11.1 技術(shù)要求 338
11.2 使用PyTorch進(jìn)行分布式訓(xùn)練 338
11.2.1 以常規(guī)方式訓(xùn)練MNIST模型 339
11.2.2 以分布式方式訓(xùn)練MNIST模型 342
11.3 使用CUDA在GPU上進(jìn)行分布式訓(xùn)練 350
11.4 總結(jié) 353
第 12 章 PyTorch和AutoML 355
12.1 技術(shù)要求 355
12.2 使用AutoML尋找最佳神經(jīng)架構(gòu) 356
12.3 使用Optuna進(jìn)行超參數(shù)搜索 365
12.4 定義模型架構(gòu)和加載數(shù)據(jù)集 366
12.4.1 定義模型訓(xùn)練例程和優(yōu)化計劃 369
12.4.2 運(yùn)行Optuna的超參數(shù)搜索 370
12.5 總結(jié) 373
第 13 章 PyTorch和AI可解釋 375
13.1 技術(shù)要求 376
13.2 PyTorch中的模型可解釋性 376
13.2.1 訓(xùn)練手寫數(shù)字分類器—回顧 376
13.2.2 可視化模型的卷積過濾器 379
13.2.3 可視化模型的特征圖 381
13.3 使用Captum解釋模型 384
13.3.1 設(shè)置Captum 384
13.3.2 探索Captum的可解釋性工具 386
13.4 總結(jié) 390
第 14 章 使用PyTorch進(jìn)行快速原型設(shè)計 391
14.1 技術(shù)要求 392
14.2 使用fast.ai快速設(shè)置模型訓(xùn)練 392
14.2.1 設(shè)置fast.ai并加載數(shù)據(jù) 393
14.2.2 使用fast.ai訓(xùn)練MNIST模型 395
14.2.3 使用fast.ai評估和解釋模型 397
14.3 在任何硬件上使用PyTorch Lightning訓(xùn)練模型 399
14.3.1 在PyTorch Lightning中定義模型組件 399
14.3.2 使用PyTorch Lightning訓(xùn)練并評估模型 401
14.4 總結(jié) 405