本書(shū)提供使用PyTorch 開(kāi)發(fā)深度學(xué)習(xí)應(yīng)用程序的基本原理和方法,旨在為讀者介紹機(jī)器學(xué)習(xí)工程師和數(shù)據(jù)科學(xué)家在解決深度學(xué)習(xí)問(wèn)題中所采用的主流現(xiàn)代算法與技術(shù),緊跟深度學(xué)習(xí)領(lǐng)域的最新發(fā)展趨勢(shì),助力初學(xué)者熟練掌握PyTorch。本書(shū)的核心優(yōu)勢(shì)在于,采用易于理解的問(wèn)題與解決方案的結(jié)構(gòu),全面而詳盡地講解了PyTorch的使用方法,并提供了大量相應(yīng)的代碼示例,以便將這些概念順利應(yīng)用于實(shí)際項(xiàng)目中。
本書(shū)適合對(duì)計(jì)算機(jī)視覺(jué)、自然語(yǔ)言處理等領(lǐng)域感興趣的人士閱讀。對(duì)于希望在深度學(xué)習(xí)任務(wù)中運(yùn)用PyTorch 的讀者,本書(shū)將是一本實(shí)用的指南。
本書(shū)的核心優(yōu)勢(shì)在于,采用易于理解的問(wèn)題與解決方案的結(jié)構(gòu),全面而詳盡地講解了PyTorch的使用方法,并提供了大量相應(yīng)的代碼示例,以便將這些概念順利應(yīng)用于實(shí)際項(xiàng)目中。
前 言
隨著人工智能產(chǎn)品和解決方案的日益普及,基于圖論的計(jì)算框架的需求也隨之增長(zhǎng)。為了使深度學(xué)習(xí)模型在實(shí)際應(yīng)用中發(fā)揮更大的作用,我們需要一個(gè)動(dòng)態(tài)的、靈活的,并且可與其他框架互操作的建?蚣堋_@種需求促使我們尋求更加高效和可靠的計(jì)算框架,以支持人工智能技術(shù)的廣泛應(yīng)用。PyTorch 是一款新興的圖計(jì)算工具/ 編程語(yǔ)言,旨在突破傳統(tǒng)框架的限制。為了提升用戶在深度學(xué)習(xí)模型部署方面的體驗(yàn),以及在多模型(包括卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)、LSTM以及深度神經(jīng)網(wǎng)絡(luò))組合創(chuàng)建高級(jí)模型方面的便利性,PyTorch 提供了卓越的支持。PyTorch 是由Facebook 人工智能研究部門(mén)(FAIR) 精心打造的,其設(shè)計(jì)理念在于使模型開(kāi)發(fā)過(guò)程更為簡(jiǎn)潔、直觀和動(dòng)態(tài)。通過(guò)這種方式,開(kāi)發(fā)者不再需要在編譯和執(zhí)行模型之前明確地聲明各種對(duì)象,從而極大地提升了開(kāi)發(fā)效率。PyTorch 是基于Torch 框架的,并且是該框架的Python 語(yǔ)言擴(kuò)展版本。
本書(shū)適用于數(shù)據(jù)科學(xué)家、自然語(yǔ)言處理工程師、人工智能解決方案開(kāi)發(fā)者、從事圖計(jì)算框架工作的專業(yè)人士以及圖論研究人員。本書(shū)旨在為讀者提供張量基礎(chǔ)知識(shí)及計(jì)算方面的入門(mén)指導(dǎo)。通過(guò)學(xué)習(xí)本書(shū),讀者將掌握如何運(yùn)用PyTorch 框架進(jìn)行算術(shù)操作、矩陣代數(shù)和統(tǒng)計(jì)分布運(yùn)算。第3 章和第4 章詳細(xì)描述了神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)知識(shí)。探討了卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)和LSTM 等高級(jí)神經(jīng)網(wǎng)絡(luò)。讀者將能夠使用PyTorch 函數(shù)實(shí)現(xiàn)這些模型。第5 章和第6 章討論了模型的微調(diào)、超參數(shù)調(diào)整以及生產(chǎn)環(huán)境中現(xiàn)有PyTorch 模型的改進(jìn)。讀者將學(xué)習(xí)如何選擇超參數(shù)來(lái)微調(diào)模型。第7 章講解了自然語(yǔ)言處理。深度學(xué)習(xí)模型及其在自然語(yǔ)言處理和人工智能中的應(yīng)用是業(yè)內(nèi)要求最高的技能組合之一。讀者將能夠?qū)?zhí)行和處理自然語(yǔ)言的PyTorch 實(shí)現(xiàn)進(jìn)行基準(zhǔn)測(cè)試。此外,讀者能夠?qū)yTorch 與其他基于圖計(jì)算的深度學(xué)習(xí)編程工具進(jìn)行比較。源代碼訪問(wèn)github.com/apress/pytorch-recipes-2e 可獲取作者引用的所有源代碼和其他補(bǔ)充材料。
關(guān)于作者
Pradeepta Mishra 是一位在人工智能領(lǐng)域具有深厚造詣的專家,在數(shù)據(jù)科學(xué)和人工智能架構(gòu)方面擁有豐富的實(shí)踐經(jīng)驗(yàn),目前擔(dān)任FOSFOR 公司旗下5 個(gè)產(chǎn)品的自然語(yǔ)言處理、機(jī)器學(xué)習(xí)及人工智能計(jì)劃的主管。FOSFOR 公司作為業(yè)界領(lǐng)先的人工智能和機(jī)器學(xué)習(xí)創(chuàng)新公司,始終站在技術(shù)前沿。Pradeepta Mishra 的專長(zhǎng)在于設(shè)計(jì)卓越的人工智能系統(tǒng),尤其在理解和處理自然語(yǔ)言以及基于自然語(yǔ)言處理的推薦系統(tǒng)方面展現(xiàn)出超凡的專業(yè)能力。他作為發(fā)明人共申請(qǐng)了12 項(xiàng)專利,并在學(xué)術(shù)領(lǐng)域取得了豐碩的成果。他先后撰寫(xiě)了5 本著作,內(nèi)容涵蓋數(shù)據(jù)挖掘、空間數(shù)據(jù)、文本數(shù)據(jù)、網(wǎng)絡(luò)數(shù)據(jù)和社交媒體數(shù)據(jù)等多個(gè)領(lǐng)域。這些書(shū)籍均由知名出版社出版發(fā)行,分別為《R 數(shù)據(jù)挖掘藍(lán)圖》(Packt 出版社,2016 年)、《R:挖掘空間、文本、網(wǎng)絡(luò)和社交媒體數(shù)據(jù)》(Packt 出版社,2017 年)、《PyTorch 秘籍》(Apress,2019 年) 和《Python 實(shí)用說(shuō)明性人工智能》(Apress,2022 年)。基于這些學(xué)術(shù)成果,他還在在線教育平臺(tái)Udemy 上開(kāi)設(shè)了兩門(mén)相關(guān)課程,為廣大學(xué)員提供了寶貴的學(xué)習(xí)資源。在2018 年全球數(shù)據(jù)科學(xué)大會(huì)上,Pradeepta 發(fā)表了關(guān)于雙向LSTM 在時(shí)間序列預(yù)測(cè)中的主題演講,為參會(huì)者提供了深入的技術(shù)見(jiàn)解。此外,他在TED 演講中探討了人工智能對(duì)行業(yè)轉(zhuǎn)型和變革工作角色的影響,引發(fā)了廣泛的思考和討論。Pradeepta 不僅在專業(yè)領(lǐng)域有所建樹(shù),還熱衷于分享他的知識(shí)和經(jīng)驗(yàn)。曾在各類聚會(huì)、技術(shù)機(jī)構(gòu)、大學(xué)和社區(qū)論壇上進(jìn)行了150 余場(chǎng)技術(shù)演講,為聽(tīng)眾提供了寶貴的洞見(jiàn)。如需了解更多關(guān)于Pradeepta 的信息,請(qǐng)?jiān)L問(wèn)他的 LinkedIn 頁(yè)面(www.linkedin.com/in/pradeepta/) 或關(guān)注他的Twitter 賬號(hào)@pradmishra1。關(guān)于技術(shù)審查員Chris Thomas 是一位在人工智能和機(jī)器學(xué)習(xí)領(lǐng)域擁有豐富研究和開(kāi)發(fā)經(jīng)驗(yàn)的英國(guó)顧問(wèn)。他還是英國(guó)分析師和程序員協(xié)會(huì)的專業(yè)會(huì)員,擁有超過(guò)20 年的技術(shù)專業(yè)生涯經(jīng)驗(yàn)。在此期間,他曾在公共部門(mén)、半導(dǎo)體行業(yè)、金融、公用事業(yè)和營(yíng)銷領(lǐng)域擔(dān)任要職,積累了豐富的實(shí)踐經(jīng)驗(yàn)。
目 錄
譯者序
關(guān)于作者
關(guān)于技術(shù)審查員
致謝
前言
第1 章 PyTorch 入門(mén),張量與張量運(yùn)算 1
什么是PyTorch 5
PyTorch 安裝 5
秘籍1-1 張量的使用 7
小結(jié) 36
第2 章 使用PyTorch 中的概率分布 37
秘籍2-1 采樣張量 38
秘籍2-2 可變張量 43
秘籍2-3 統(tǒng)計(jì)學(xué)基礎(chǔ) 45
秘籍2-4 梯度計(jì)算 51
秘籍2-5 張量運(yùn)算之一 54
秘籍 2-6 張量運(yùn)算之二 55
秘籍2-7 統(tǒng)計(jì)分布 58
小結(jié) 62
第3 章 使用PyTorch 中的卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò) 63
秘籍 3-1 設(shè)置損失函數(shù) 63
秘籍3-2 估計(jì)損失函數(shù)的導(dǎo)數(shù) 67
秘籍3-3 模型微調(diào) 73
秘籍3-4 優(yōu)化函數(shù)選擇 75
秘籍3-5 進(jìn)一步優(yōu)化函數(shù) 80
秘籍3-6 實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò) 84
秘籍3-7 模型重載 92
秘籍3-8 實(shí)現(xiàn)循環(huán)神經(jīng)網(wǎng)絡(luò) 96
秘籍3-9 實(shí)現(xiàn)用于回歸問(wèn)題的循環(huán)神經(jīng)網(wǎng)絡(luò) 102
秘籍3-10 使用PyTorch 內(nèi)置的循環(huán)神經(jīng)網(wǎng)絡(luò)函數(shù) 104
秘籍3-11 使用自編碼器(Autoencoder) 108
秘籍 3-12 使用自編碼器實(shí)現(xiàn)結(jié)果微調(diào) 113
秘籍3-13 約束模型過(guò)擬合 116
秘籍3-14 可視化模型過(guò)擬合 119
秘籍3-15 初始化權(quán)重中的丟棄率 123
秘籍3-16 添加數(shù)學(xué)運(yùn)算 125
秘籍3-17 循環(huán)神經(jīng)網(wǎng)絡(luò)中的嵌入層 128
小結(jié) 130
第4 章 PyTorch 中的神經(jīng)網(wǎng)絡(luò)簡(jiǎn)介 131
秘籍4-1 激活函數(shù)的使用 131
秘籍4-2 激活函數(shù)可視化 139
秘籍4-3 基本的神經(jīng)網(wǎng)絡(luò)模型 142
秘籍4-4 張量微分 146
小結(jié) 148
第5 章 PyTorch 中的監(jiān)督學(xué)習(xí) 149
秘籍5-1 監(jiān)督模型的數(shù)據(jù)準(zhǔn)備 153
秘籍5-2 前向和反向傳播神經(jīng)網(wǎng)絡(luò) 155
秘籍5-3 優(yōu)化和梯度計(jì)算 158
秘籍5-4 查看預(yù)測(cè)結(jié)果 160
秘籍5-5 監(jiān)督模型邏輯回歸 164
小結(jié) 168
第6 章 使用PyTorch 對(duì)深度學(xué)習(xí)模型進(jìn)行微調(diào) 169
秘籍6-1 構(gòu)建順序神經(jīng)網(wǎng)絡(luò) 170
秘籍6-2 確定批量的大小 172
秘籍6-3 確定學(xué)習(xí)率 175
秘籍6-4 執(zhí)行并行訓(xùn)練 180
小結(jié) 182
第7 章 使用PyTorch 進(jìn)行自然語(yǔ)言處理 183
秘籍7-1 詞嵌入 185
秘籍7-2 使用PyTorch 創(chuàng)建CBOW 模型 190
秘籍7-3 LSTM 模型 194
小結(jié) 199
第8 章 分布式PyTorch 建模、模型優(yōu)化和部署 200
秘籍8-1 分布式Torch 架構(gòu) 200
秘籍8-2 Torch 分布式組件 202
秘籍8-3 設(shè)置分布式PyTorch 203
秘籍8-4 加載數(shù)據(jù)到分布式PyTorch 205
秘籍8-5 PyTorch 中的模型量化 208
秘籍8-6 量化觀察器應(yīng)用 211
秘籍8-7 使用MNIST 數(shù)據(jù)集應(yīng)用量化技術(shù) 213
小結(jié) 225
第9 章 圖像和音頻的數(shù)據(jù)增強(qiáng)、特征工程和提取 226
秘籍9-1 音頻處理中的頻譜圖 226
秘籍9-2 安裝Torchaudio 229
秘籍9-3 將音頻文件加載到PyTorch 中 231
秘籍9-4 安裝用于音頻的Librosa 庫(kù) 232
秘籍9-5 頻譜圖變換 234
秘籍9-6 Griffin-Lim 變換 236
秘籍9-7 使用濾波器組進(jìn)行梅爾尺度轉(zhuǎn)換 237
秘籍9-8 Librosa 的梅爾尺度轉(zhuǎn)換與Torchaudio 版本對(duì)比 240
秘籍9-9 使用Librosa 和Torchaudio 進(jìn)行MFCC 和LFCC 243
秘籍9-10 圖像數(shù)據(jù)增強(qiáng) 247
小結(jié) 250
第10 章 PyTorch 模型可解釋性和Skorch 251
秘籍10-1 安裝Captum 庫(kù) 252
秘籍10-2 主要?dú)w因:深度學(xué)習(xí)模型的特征重要性 253
秘籍10-3 深度學(xué)習(xí)模型中神經(jīng)元的重要性 259
秘籍10-4 安裝Skorch 庫(kù) 260
秘籍10-5 Skorch 組件在神經(jīng)網(wǎng)絡(luò)分類器中的應(yīng)用 262
秘籍10-6 Skorch 神經(jīng)網(wǎng)絡(luò)回歸器 265
秘籍10-7 Skorch 模型的保存和加載 269
秘籍10-8 使用Skorch 創(chuàng)建神經(jīng)網(wǎng)絡(luò)模型流水線 270
秘籍10-9 使用Skorch 進(jìn)行神經(jīng)網(wǎng)絡(luò)模型的輪次評(píng)分 272
秘籍10-10 使用Skorch 進(jìn)行超參數(shù)的網(wǎng)格搜索 274
小結(jié) 276