PyTorch深度學(xué)習(xí)入門與實戰(zhàn)
定 價:69.8 元
- 作者:王宇龍 著
- 出版時間:2020/9/1
- ISBN:9787113270049
- 出 版 社:中國鐵道出版社
- 中圖法分類:TP181
- 頁碼:216
- 紙張:膠版紙
- 版次:1
- 開本:16開
內(nèi) 容 簡 介
書中以案例形式詳細(xì)介紹了PyTorch的各種實戰(zhàn)應(yīng)用。具體內(nèi)容包括PyTorch與TensorFlow的對比和PyTorch的發(fā)展現(xiàn)狀,張量Tensor和自動微分Autograd及其具體應(yīng)用,PyTorch構(gòu)建神經(jīng)網(wǎng)絡(luò),基于PyTorch構(gòu)建復(fù)雜應(yīng)用,PyTorch高級技巧與實戰(zhàn)應(yīng)用,網(wǎng)絡(luò)剪枝應(yīng)用。
中國科學(xué)院院士,清華大學(xué)人工智能研究院院長張鈸傾力推薦
詳解PyTorch框架分布式計算、CUDA擴(kuò)展等高級使用技巧
涵蓋圖像分類、文本處理、物體定位、自動架構(gòu)搜索等諸多領(lǐng)域?qū)崙?zhàn)案例
豐富的新科研成果引用展示,緊跟人工智能發(fā)展前沿
提供完整源代碼文件
前言
深度學(xué)習(xí)作為近些年來人工智能領(lǐng)域發(fā)展非常迅速,應(yīng)用普及范圍非常廣的技術(shù),受到越來越多的關(guān)注。其在諸多領(lǐng)域創(chuàng)造出的許多成果,讓人們開始暢想未來的人工智能時代。因此無論是科研人員還是相關(guān)領(lǐng)域從業(yè)者,都在密切關(guān)注并學(xué)習(xí)了解這一領(lǐng)域的進(jìn)展。
但是回想在十年前,想要讓一個初學(xué)者迅速進(jìn)行一個訓(xùn)練深度學(xué)習(xí)模型的實驗則是十分困難的。歸根結(jié)底是因為當(dāng)時并沒有一款廣泛普及的深度學(xué)習(xí)編程框架。每個研究者需要編寫出復(fù)雜的反向傳播求導(dǎo)過程,處理數(shù)據(jù)多線程加載,GPU并行計算等等技術(shù)細(xì)節(jié)。這其實也限制了當(dāng)時初期深度學(xué)習(xí)技術(shù)的普及。但是好在隨著如Caffe、Theano、TensorFlow、PyTorch等等一系列深度學(xué)習(xí)框架的出現(xiàn),讓普通的研究者也可以輕松實現(xiàn)大規(guī)模數(shù)據(jù)并行編程,這才使得深度學(xué)習(xí)領(lǐng)域發(fā)展百花齊放,日益蓬勃。
本書所介紹的便是以上諸多編程框架中,我個人認(rèn)為當(dāng)前使用方法較靈活易懂的PyTorch可微編程框架。雖然PyTorch發(fā)展才不過兩三年時間,但是憑借其良好的應(yīng)用接口,簡潔直觀的編程模型,動態(tài)靈活的計算過程,成為后起之秀,逐漸被廣大研究者所推崇使用。我也是在平時科研期間主要應(yīng)用PyTorch框架,書中介紹的諸多內(nèi)容也是我平時的經(jīng)驗總結(jié)。可以略夸張地說,在使用PyTorch框架編程之后,限制你科研成果進(jìn)展的只剩下你的想象力和創(chuàng)造力,在編程實現(xiàn)上幾乎沒有任何阻礙了。
全書分為6章。第1章是PyTorch簡介,可以讓讀者簡略了解PyTorch框架的發(fā)展起源歷程。第2~5章則由淺入深逐步介紹PyTorch的使用方法和編程技巧。其中先介紹了PyTorch作為支撐可微編程模型的基礎(chǔ)張量以及自動求導(dǎo),然后介紹高層封裝模塊用以搭建神經(jīng)網(wǎng)絡(luò),接著講解實際的應(yīng)用任務(wù)實現(xiàn),這里需要涉及到諸多外延內(nèi)容,如數(shù)據(jù)加載預(yù)處理、模型加載保存、多GPU分布式計算、自定義擴(kuò)展實現(xiàn)底層算子等等。最后一章通過一個完整的實驗任務(wù)全面展示PyTorch在實際科研中的應(yīng)用。在每一章講解過程中,都會附帶一些實戰(zhàn)應(yīng)用案例,以便于讀者能夠快速應(yīng)用相關(guān)知識解決實際問題。這些實際問題我在設(shè)計之時,特別考慮了其實用性和理解性之間的平衡。既可以起到應(yīng)用相關(guān)知識技能點,又不使其淪為過于簡單的Toy Example。同時許多實戰(zhàn)應(yīng)用和案例講解均是以當(dāng)前深度學(xué)習(xí)領(lǐng)域前沿的研究成果進(jìn)行展示,讓讀者在學(xué)習(xí)PyTorch框架之時,并不局限于只學(xué)習(xí)技術(shù),更能了解跟蹤當(dāng)前科研領(lǐng)域的最新進(jìn)展。
本書是我編寫的第一部書籍,在寫作過程中也存在著諸多不足。比如全書聚焦于PyTorch應(yīng)用環(huán)節(jié),對于其框架底層具體實現(xiàn)講解缺乏。同時限于篇幅和內(nèi)容范圍,許多案例講解我只能以簡化設(shè)置形式進(jìn)行講解。對于實際應(yīng)用中有著更為復(fù)雜處理流程的大型任務(wù),本文缺少進(jìn)一步展示。雖然如此,我仍滿懷誠意盡我所能使本書完美。我希望這本書可以成為人工智能領(lǐng)域初學(xué)者的啟發(fā),促使讀者能夠大膽探索當(dāng)前人工智能各個方向的研究領(lǐng)域,創(chuàng)造出屬于自己的研究成果。最后歡迎各位批評指正,感謝成書過程中所有幫助過我的人!
作 者
2020年7月
王宇龍
博士,畢業(yè)于清華大學(xué)計算機(jī)系,曾在CVPR/AAAI/TIP等多家國際會議期刊發(fā)表論文,研究方向為深度學(xué)習(xí)可解釋性、模型剪枝、對抗安全等。知乎“機(jī)器學(xué)習(xí)”話題優(yōu)秀回答者(@Yulong)。現(xiàn)任螞蟻金服算法專家。
目錄
第1章 PyTorch簡介
1.1 深度學(xué)習(xí)簡介 1
1.2 PyTorch的由來 2
1.2.1 深度學(xué)習(xí)框架回顧 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ā)展現(xiàn)狀 8
1.4.1 主要版本特點回顧 8
1.4.2 準(zhǔn)備工作 8
第2章 PyTorch基礎(chǔ)計算
2.1 PyTorch核心基礎(chǔ)概念:張量Tensor 11
2.1.1 Tensor基本介紹 11
2.1.2 Tensor數(shù)學(xué)運算操作 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:自動微分實現(xiàn)基礎(chǔ) 29
2.2.5 注意事項 31
2.3 PyTorch應(yīng)用實戰(zhàn)一:實現(xiàn)卷積操作 34
2.3.1 卷積操作 34
2.3.2 利用張量操作實現(xiàn)卷積 36
2.4 PyTorch應(yīng)用實戰(zhàn)二:實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行圖像分類 38
第3章 PyTorch構(gòu)建神經(jīng)網(wǎng)絡(luò)
3.1 PyTorch神經(jīng)網(wǎng)絡(luò)計算核心:torch.nn 43
3.1.1 nn.Module概述 43
3.1.2 結(jié)構(gòu)化構(gòu)建神經(jīng)網(wǎng)絡(luò) 47
3.1.3 經(jīng)典神經(jīng)網(wǎng)絡(luò)層介紹 49
3.1.4 函數(shù)式操作nn.functional 53
3.2 PyTorch優(yōu)化器 55
3.2.1 torch.optim概述 55
3.2.2 經(jīng)典優(yōu)化器介紹 56
3.2.3 學(xué)習(xí)率調(diào)整 57
3.3 PyTorch應(yīng)用實戰(zhàn)一:實現(xiàn)二值化神經(jīng)網(wǎng)絡(luò) 59
3.3.1 二值化網(wǎng)絡(luò)BinaryNet概述 59
3.3.2 具體實現(xiàn) 60
3.4 PyTorch應(yīng)用實戰(zhàn)二:利用LSTM實現(xiàn)文本情感分類 63
3.4.1 文本情感分類 63
3.4.2 具體實現(xiàn) 65
第4章 基于PyTorch構(gòu)建復(fù)雜應(yīng)用
4.1 PyTorch數(shù)據(jù)加載 70
4.1.1 數(shù)據(jù)預(yù)處理:torchvision.transforms 70
4.1.2 數(shù)據(jù)加載:torch.utils.data 73
4.2 PyTorch模型搭建 77
4.2.1 經(jīng)典模型復(fù)用與分享:torchvision.models 78
4.2.2 模型加載與保存 79
4.2.3 導(dǎo)出為ONNX格式 85
4.3 訓(xùn)練過程中日志記錄與可視化 89
4.4 PyTorch應(yīng)用實戰(zhàn)一:在CIFAR10數(shù)據(jù)集進(jìn)行神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索 93
4.4.1 可微分網(wǎng)絡(luò)架構(gòu)搜索DARTS介紹 94
4.4.2 簡化問題建模:以ResNet為例 95
4.4.3 具體實現(xiàn) 96
4.5 PyTorch應(yīng)用實戰(zhàn)二:在ImageNet數(shù)據(jù)集進(jìn)行弱監(jiān)督物體定位 108
4.5.1 GradCAM解釋顯著圖方法介紹 108
4.5.2 弱監(jiān)督物體定位任務(wù) 109
4.5.3 具體實現(xiàn) 110
第5章 PyTorch高級技巧與實戰(zhàn)應(yīng)用
5.1 PyTorch并行計算 118
5.1.1 大規(guī)模數(shù)據(jù)集加載 118
5.1.2 模型的高效并行計算 122
5.1.3 加速模型計算和減少顯存使用 125
5.2 擴(kuò)展PyTorch 126
5.2.1 利用C++和CUDA實現(xiàn)自定義算子 126
5.2.2 利用TorchScript導(dǎo)出PyTorch模型 136
5.3 豐富的PyTorch資源介紹 145
5.4 PyTorch應(yīng)用實戰(zhàn)一:在ImageNet上訓(xùn)練MobileNet-V2網(wǎng)絡(luò) 146
5.4.1 MobileNet-V2網(wǎng)絡(luò)介紹 146
5.4.2 具體實現(xiàn) 147
5.5 PyTorch應(yīng)用實戰(zhàn)二:利用CUDA擴(kuò)展實現(xiàn)MixConv算子 157
5.5.1 MixConv算子介紹 157
5.5.2 借鑒Depthwise卷積實現(xiàn)思路 158
5.5.3 具體實現(xiàn) 160
第6章 PyTorch完整實戰(zhàn)講解——網(wǎng)絡(luò)剪枝應(yīng)用
6.1 網(wǎng)絡(luò)剪枝介紹 169
6.1.1 剪枝方法分類 169
6.1.2 基于權(quán)重通道重要性的結(jié)構(gòu)化剪枝 170
6.1.3 問題定義與建模 170
6.2 具體實現(xiàn)思路 171
6.2.1 如何附屬控制門值 171
6.2.2 剪枝結(jié)構(gòu)搜索 172
6.2.3 剪枝模型訓(xùn)練 174
6.3 完整代碼實現(xiàn) 175
6.3.1 模型搭建 176
6.3.2 剪枝器實現(xiàn) 181
6.3.3 學(xué)習(xí)控制門變量 183
6.3.4 剪枝模型 187
6.3.5 訓(xùn)練模型 189
6.3.6 規(guī);瘑佑(xùn)練任務(wù) 193
6.4 實驗結(jié)果 198
參考文獻(xiàn)