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