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