作 者:(美)伊萊·史蒂文斯,(意)盧卡·安蒂加,(德)托馬斯·菲曼 著 牟大恩 譯
出 版 社:人民郵電出版社
出版日期:2022年02月01日
頁 數:448
裝 幀:平裝
ISBN:9787115577672
內容簡介
雖然很多深度學習工具都使用Python,但PyTorch 庫是真正具備Python 風格的。對於任何了解NumPy 和scikit-learn 等工具的人來說,上手PyTorch 輕而易舉。 PyTorch 在不犧牲不錯特性的情況下簡化了深度學習,它很好適合構建快速模型,並且可以平穩地從個人應用擴展到企業級應用。由於像蘋果、Facebook和摩根大通這樣的公司都使用PyTorch,所以當你掌握了PyTorth,就會擁有更多的職業選擇。本書是教你使用 PyTorch 創建神經網絡和深度學習系統的實用指南。它幫助讀者快速從零開始構建一個真實示例:腫瘤圖像分類器。在此過程中,它涵蓋了整個深度學習管道的關鍵實踐,包括 PyTorch張量 API、用 Python 加載數據、監控訓練以及將結果進行可視化展示。本書主要內容: (1)訓練深層神經網絡; (2)實現模塊和損失函數; (3)使用 PyTo......
作者介紹
作者伊萊·史蒂文斯(Eli Stevens)職業生涯的大部分時間都在美國矽谷的初創公司工作,從軟件工程師(網絡設備製造業)到首席技術官(開發腫瘤放療軟件)。在本書出版時,他正在汽車自動駕駛行業從事機器學習相關工作。盧卡·安蒂加(Luca Antiga)於21 世紀初擔任生物醫學工程研究員。 2010 年到2020 年間,他是一家人工智能工程公司的聯合創始人和首席技術官。他參與了多個開源項目,包括PyTorch 的核心模塊。最近,他作為聯合創始人創建了一家總部位於美國的初創公司,專注於數據定義軟件的基礎設施。托馬斯·菲曼(Thomas Viehmann)是一名德國慕尼黑的機器學習和PyT......
編輯推薦
PyTorch核心開發者教你使用 PyTorch 創建神經網絡和深度學習系統的實用指南。 2.詳細講解整個深度學習管道的關鍵實踐,包括 PyTorch張量API、用 Python 加載數據、監控訓練以及對結果進行可視化。 3. PyTorch核心知識+真實、完整的案例項目,快速提升讀者動手能力: a.全面掌握PyTorch 相關的API 的使用方法以及系統掌握深度學習的理論和方法; b.快速從零開始構建一個真實示例:腫瘤圖像分類器; c.輕鬆學會使用PyTorch 實現各種神經網......
目錄
第1部分PyTorch核心
第1章深度學習和PyTorch庫簡介3
1.1深度學習革命4
1.2PyTorch深度學習5
1.3為什麼用PyTorch6
1.4PyTorch如何支持深度學習概述8
1.5硬件和軟件要求10
1.6練習題12
1.7本章小結13
第2章預訓練網絡14
2.1一個識別圖像主體的預訓練網絡15
2.1.1獲取一個預先訓練好的網絡用於圖像識別16
2.1.2AlexNet17
2.1.3ResNet19
2.1.4準備運行19
2.1.5運行模型21
2.2一個足以以假亂真的預訓練模型23
2.2.1GAN遊戲24
2.2.2CycleGAN25
2.2.3一個把馬變成斑馬的網絡26
2.3一個描述場景的預訓練網絡29
2.4TorchHub31
2.5總結32
2.6練習題32
2.7本章小結33
第3章從張量開始34
3.1實際數據轉為浮點數34
3.2張量:多維數組36
3.2.1從Python列表到PyTorch張量36
3.2.2構造個張量37
3.2.3張量的本質37
3.3索引張量40
3.4命名張量40
3.5張量的元素類型43
3.5.1使用dtype指定數字類型43
3.5.2適合任何場合的dtype44
3.5.3管理張量的dtype屬性44
3.6張量的API45
3.7張量的存儲視圖46
3.7.1索引存儲區47
3.7.2修改存儲值:就地操作48
3.8張量元數據:大小、偏移量和步長48
3.8.1另一個張量的存儲視圖49
3.8.2無復制轉置51
3.8.3高維轉置52
3.8.4連續張量53
3.9將張量存儲到GPU55
3.10NumPy互操作性57
3.11廣義張量也是張量57
3.12序列化張量58
3.13總結60
3.14練習題60
3.15本章小結60
第4章使用張量表徵真實數據61
4.1處理圖像62
4.1.1添加顏色通道62
4.1.2加載圖像文件63
4.1.3改變佈局63
4.1.4正規化數據64
4.2三維圖像:體數據65
4.3表示表格數據66
4.3.1使用真實的數據集67
4.3.2加載葡萄酒數據張量68
4.3.3表示分數70
4.3.4獨熱編碼70
4.3.5何時分類72
4.3.6尋找閾值73
4.4處理時間序列75
4.4.1增加時間維度76
4.4.2按時間段調整數據77
4.4.3準備訓練79
4.5表示文本81
4.5.1將文本轉化為數字81
4.5.2獨熱編碼字符82
4.5.3獨熱編碼整個詞83
4.5.4文本嵌入85
4.5.5作為藍圖的文本嵌入87
4.6總結88
4.7練習題88
4.8本章小結88
第5章學習的機制90
5.1永恆的建模經驗90
5.2學習就是參數估計92
5.2.1一個熱點問題93
5.2.2收集一些數據93
5.2.3可視化數據94
5.2.4選擇線性模型首試94
5.3減少損失是我們想要的95
5.4沿著梯度下降98
5.4.1減小損失99
5.4.2進行分析99
5.4.3迭代以適應模型101
5.4.4歸一化輸入104
5.4.5再次可視化數據106
5.5PyTorch自動求導:反向傳播的一切107
5.5.1自動計算梯度107
5.5.2優化器111
5.5.3訓練、驗證和過擬合115
5.5.4自動求導更新及關閉120
5.6總結121
5.7練習題122
5.8本章小結122
第6章使用神經網絡擬合數據123
6.1人工神經網絡124
6.1.1組成一個多層網絡125
6.1.2理解誤差函數125
6.1.3我們需要的只是激活函數126
6.1.4更多激活函數128
6.1.5選擇很好激活函數128
6.1.6學習對於神經網絡意味著什麼129
6.2PyTorchnn模塊131
6.2.1使用__call__()而不是forward()132
6.2.2回到線性模型133
6.3最終完成一個神經網絡137
6.3.1替換線性模型137
6.3.2檢查參數138
6.3.3與線性模型對比141
6.4總結142
6.5練習題142
6.6本章小結142
第7章區分鳥和飛機:從圖像學習143
7.1微小圖像數據集143
7.1.1 CIFAR-10144
7.1.2Dataset類145
7.1.3Dataset變換146
7.1.4數據歸一化149
7.2區分鳥和飛機150
7.2.1構建數據集151
7.2.2一個全連接模型152
7.2.3分類器的輸出153
7.2.4用概率表示輸出154
7.2.5分類的損失157
7.2.6訓練分類器159
7.2.7全連接網絡的局限165
7.3總結167
7.4練習題167
7.5本章小結168
第8章使用卷積進行泛化169
8.1卷積介紹169
8.2卷積實戰172
8.2.1填充邊界173
8.2.2用卷積檢測特徵175
8.2.3使用深度和池化技術進一步研究177
8.2.4為我們的網絡整合一切179
8.3子類化nn. Module181
8.3.1將我們的網絡作為一個nn. Module182
8.3.2PyTorch如何跟踪參數和子模塊183
8.3.3函數式API184
8.4訓練我們的convnet185
8.4.1測量精度187
8.4.2保存並加載我們的模型188
8.4.3在GPU上訓練188
8.5模型設計190
8.5.1增加內存容量:寬度191
8.5.2幫助我們的模型收斂和泛化:正則化192
8.5.3深入學習更複雜的結構:深度195
8.5.4本節設計的比較200
8.5.5已經過時了201
8.6總結201
8.7練習題201
8.8本章小結202
第2部分從現實世界的圖像中學習:肺癌的早期檢測
第9章使用PyTorch來檢測癌症205
9.1用例簡介205
9.2為一個大型項目做準備206
9.3到底什麼是CT掃描207
9.4項目:肺癌的端到端檢測儀210
9.4.1為什麼我們不把數據扔給神經網絡直到它起作用呢213
9.4.2什麼是結節216
9.4.3我們的數據來源:LUNA大挑戰賽217
9.4.4 LUNA數據集218
9.5總結219
9.6本章小結219
第10章將數據源組合成統一的數據集220
10.1原始CT數據文件222
10.2解析LUNA的標註數據222
10.2.1訓練集和驗證集224
10.2.2統一標註和候選數據225
10.3加載單個CT掃描227
10.4使用病人坐標系定位結節230
10.4.1病人坐標系230
10.4.2CT掃描形狀和體素大小232
10.4.3毫米和體素地址之間的轉換233
10.4.4從CT掃描中取出一個結節234
10.5一個簡單的數據集實現235
10.5.1使用getCtRawCandidate()函數緩存候選數組238
10.5.2在LunaDataset. __init__()中構造我們的數據集238
10.5.3分隔訓練集和驗證集239
10.5.4呈現數據240
10.6總結241
10.7練習題241
10.8本章小結242
第11章訓練分類模型以檢測可疑腫瘤243
11.1一個基本的模型和訓練循環243
11.2應用程序的主入口點246
11.3預訓練和初始化247
11.3.1初始化模型和優化器247
11.3.2數據加載器的維護和供給249
11.4我們的搶先發售神經網絡設計251
11.4.1核心卷積251
11.4.2完整模型254
11.5訓練和驗證模型257
11.5.1computeBatchLoss()函數258
11.5.2類似的驗證循環260
11.6輸出性能指標261
11.7運行訓練腳本265
11.7.1訓練所需的數據266
11.7.2插曲:enumerateWithEstimate()函數266
11.8評估模型:得到99.7%的正確率是否意味著我們完成了任務268
11.9用TensorBoard繪製訓練指標269
11.9.1運行TensorBoard269
11.9.2增加TensorBoard對指標記錄函數的支持272
11.10為什麼模型不學習檢測結節274
11.11總結275
11.12練習題275
11.13本章小結275
第12章通過指標和數據增強來提升訓練277
12.1不錯改進計劃278
12.2好狗與壞狗:假陽性與假陰性279
12.3用圖表表示陽性與陰性280
12.3.1召回率是Roxie的強項282
12.3.2精度是Preston的強項283
12.3.3在logMetrics()中實現精度和召回率284
12.3.4我們的優選性能指標:F1分數285
12.3.5我們的模型在新指標下表現如何289
12.4理想的數據集是什麼樣的290
12.4.1使數據看起來更理想化292
12.4.2使用平衡的LunaDataset與之前的數據集運行情況對比296
12.4.3認識過擬合298
12.5重新審視過擬合的問題300
12.6通過數據增強防止過擬合300
12.6.1具體的數據增強技術301
12.6.2看看數據增強帶來的改進306
12.7總結308
12.8練習題308
12.9本章小結309
第13章利用分割法尋找可疑結節310
13.1向我們的項目添加第2個模型310
13.2各種類型的分割312
13.3語義分割:逐像素分類313
13.4更新分割模型317
13.5更新數據集以進行分割319
13.5.1U-Net有很好具體的對輸入大小的要求320
13.5.2U-Net對三維和二維數據的權衡320
13.5.3構建真實、有效的數據集321
13.5.4實現Luna2dSegmentationDataset327
13.5.5構建訓練和驗證數據331
13.5.6實現TrainingLuna2dSegmentationDataset332
13.5.7在GPU上增強數據333
13.6更新用於分割的訓練腳本335
13.6.1初始化分割和增強模型336
13.6.2使用Adam優化器336
13.6.3骰子損失337
13.6.4將圖像導入TensorBoard340
13.6.5更新指標日誌343
13.6.6保存模型344
13.7結果345
13.8總結348
13.9練習題348
13.10本章小結349
第14章端到端的結節分析及下一步的方向350
14.1接近終點線350
14.2驗證集的獨立性352
14.3連接CT分割和候選結節分類353
14.3.1分割354
14.3.2將體素分組為候選結節355
14.3.3我們發現結節了嗎?分類以減少假陽性357
14.4定量驗證360
14.5預測惡性腫瘤361
14.5.1獲取惡性腫瘤信息361
14.5.2曲線基線下的區域:按直徑分類362
14.5.3重用預先存在的權重:微調365
14.5.4TensorBoard中的輸出370
14.6在診斷時所見的內容374
14.7接下來呢?其他靈感和數據的來源376
14.7.1防止過擬合:更好的正則化377
14.7.2精細化訓練數據379
14.7.3競賽結果及研究論文380
14.8總結381
14.9練習題382
14.10本章小結383
第3部分部署
第15章部署到生產環境387
15.1PyTorch模型的服務388
15.1.1支持Flask服務的模型388
15.1.2我們想從部署中得到的東西390
15.1.3批處理請求391
15.2導出模型395
15.2.1PyTorch與ONNX的互操作性396
15.2.2PyTorch自己的導出:跟踪397
15.2.3具有跟踪模型的服務器398
15.3與PyTorchJIT編譯器交互398
15.3.1超越經典Python/PyTorch的期望是什麼399
15.3.2PyTorch作為接口和後端的雙重特性400
15.3.3TorchScript400
15.3.4為可追溯的差異編寫腳本404
15.4LibTorch:C++中的PyTorch405
15.4.1從C++中運行JITed模型405
15.4.2從C++API開始408
15.5部署到移動設備411
15.6新興技術:PyTorch
模型的企業服務416
15.7總結416
15.8練習題416
15.9本章小結416
作 者:邱錫鵬 著
出 版 社:機械工業出版社
出版日期:2020年04月01日
頁 數:448
裝 幀:平裝
ISBN:9787111649687
內容簡介
本書是深度學習領域的入門教材,系統地整理了深度學習的知識體系,由淺入深地闡述了深度學習的基礎知識、主要模型以及前沿研究熱點,使得讀者能有效地掌握深度學習的相關知識,並具備以深度學習技術來處理和解決大數據問題的能力。全書共15章,分為三個部分。第一部分為機器學習基礎:第1章是緒論,概要介紹人工智能、機器學習、深度學習;第2〜3章介紹機器學習的基礎知識。第二部分是基礎模型:第4~6章分別講述三種主要的神經網絡模型:前饋神經網絡、卷積神經網絡和循環神經網絡;第7章介紹神經網絡的優化與正則化方法;第8章介紹神經網絡中的注意力機制和外部記憶;第9章簡要介紹一些無監督學習方法;第10章介紹一些模型獨立的機器學習方法,包括集成學習、自訓練、協同訓練、多任務學習、遷移學習、終身學習、元學習等。第三部分是進階模型:第11章介紹概率圖模型的基本概念;第12章介紹兩種早期的深度學習模型——玻爾茲曼機和深度信念網......
讀者對象
1.高校人工智能等相關專業方向的本科生和研究生;2.深度學習/機器學習/AI算法/自然語言處理工程師;3.從事機器學習和自然語言處理研究的專業人員;4.其他對深度學習和神經網絡感興趣的人員。
1)復旦大學邱錫鵬教授基於科研和教學實踐,歷時5年時間靜心寫作、不斷完善,深受好評的深度學習講義正式版!
2)字節跳動AI實驗室主任李航、南京大學周志華教授、復旦大學吳立德教授強力。
3)系統整理深度學習的知識體系,從機器學習基礎、神經網絡模型以及概率圖模型三個層面來串聯深度學習所涉及的知識點,兼具系統性、條理性和性。
4)在網站上配套了教學PPT以及針對每章知識點的編程練習,理論和實踐結合,加深讀者對知識的理解,並提高問題求解能力。
5)內容安排由淺入深,語言表達通俗易懂,排版佈局圖文並茂,全彩印刷裝幀精美。
目錄
序
前言
常用符號表
第1章緒論3
1.1人工智能4
1.2機器學習7
1.3表示學習8
1.4深度學習11
1.5神經網絡13
1.6本書的知識體系17
1.7常用的深度學習框架18
1.8總結和深入閱讀20
第2章機器學習概述23
2.1基本概念24
2.2機器學習的三個基本要素26
2.3機器學習的簡單示例——線性回歸33
2.4偏差-方差分解38
2.5機器學習算法的類型41
2.6數據的特徵表示43
2.7評價指標46
2.8理論和定理49
2.9總結和深入閱讀51
第3章線性模型
3.1線性判別函數和決策邊界56
3.2Logistic回歸59
3.3Softmax回歸61
3.4感知器64
3.5支持向量機71
3.6損失函數對比75
3.7總結和深入閱讀76
第二部分基礎模型
第4章前饋神經網絡81
4.1神經元82
4.1.1Sigmoid型函數83
4.1.2ReLU函數86
4.1.3Swish函數88
4.1.4GELU函數89
4.1.5Maxout單元89
4.2網絡結構90
4.3前饋神經網絡91
4.4反向傳播算法95
4.5自動梯度計算98
4.6優化問題103
4.7總結和深入閱讀104
第5章卷積神經網絡109
5.1卷積110
5.2卷積神經網絡115
5.3參數學習120
5.4幾種典型的捲積神經網絡121
5.5其他卷積方式127
5.6總結和深入閱讀130
第6章循環神經網絡133
6.1給網絡增加記憶能力134
6.2簡單循環網絡135
6.3應用到機器學習138
6.4參數學習140
6.5長程依賴問題143
6.5.1改進方案144
6.6基於門控的循環神經網絡145
6.7深層循環神經網絡149
6.8擴展到圖結構151
6.9總結和深入閱讀153
第7章網絡優化與正則化157
7.1網絡優化157
7.2優化算法160
7.3參數初始化171
7.4數據預處理176
7.5逐層歸一化178
7.6超參數優化183
7.7網絡正則化186
7.8總結和深入閱讀192
第8章註意力機制與外部記憶197
8.1認知神經學中的注意力198
8.2注意力機制199
8.3自註意力模型203
8.4人腦中的記憶205
8.5記憶增強神經網絡207
8.6基於神經動力學的聯想記憶211
8.6.1Hopfiel網絡212
8.7總結和深入閱讀215
第9章無監督學習219
9.1無監督特徵學習220
9.2概率密度估計227
9.3總結和深入閱讀232
第10章模型獨立的學習方式235
10.1集成學習235
10.1.1AdaBoost算法237
10.2自訓練和協同訓練240
10.3多任務學習242
10.4遷移學習245
10.5終身學習249
10.6元學習252
10.7總結和深入閱讀255
第三部分進階模型
第11章概率圖模型261
11.1模型表示262
11.2學習271
11.3推斷279
11.4變分推斷.283
11.5基於採樣法的近似推斷285
11.6總結和深入閱讀292
第12章深度信念網絡297
12.1玻爾茲曼機297
12.2受限玻爾茲曼機304
12.3深度信念網絡309
12.4總結和深入閱讀313
第13章深度生成模型317
13.1概率生成模型318
13.2變分自編碼器319
13.3生成對抗網絡327
13.3.1顯式密度模型和隱式密度模型327
13.3.2網絡分解327
13.3.3訓練329
13.3.4一個生成對抗網絡的具體實現:DCGAN330
13.3.5模型分析330
13.3.6改進模型333
13.4總結和深入閱讀336
第14章深度強化學習339
14.1強化學習問題340
14.1.1典型例子340
14.1.2強化學習定義340
14.1.3馬爾可夫決策過程341
14.1.4強化學習的目標函數343
14.1.5值函數344
14.1.6深度強化學習345
14.2基於值函數的學習方法346
14.2.1動態規划算法346
14.2.2蒙特卡羅方法349
14.2.3時序差分學習方法350
14.2.4深度Q網絡353
14.3基於策略函數的學習方法354
14.3.1REINFORCE算法356
14.3.2帶基準線的REINFORCE算法356
14.4演員-評論員算法358
14.5總結和深入閱讀360
第15章序列生成模型365
15.1序列概率模型366
15.1.1序列生成367
15.2N元統計模型368
15.3深度序列模型370
15.3.1模型結構370
15.3.2參數學習373
15.4評價方法373
15.4.1困惑度373
15.4.2BLEU算法374
15.4.3ROUGE算法375
15.5序列生成模型中的學習問題375
15.5.1曝光偏差問題376
15.5.2訓練目標不一致問題377
15.5.3計算效率問題377
15.6序列到序列模型385
15.6.1基於循環神經網絡的序列到序列模型386
15.6.2基於注意力的序列到序列模型387
15.6.3基於自註意力的序列到序列模型388
15.7總結和深入閱讀390
附錄數學基礎393
附錄A線性代數394
附錄B微積分404
附錄C數學優化413
附錄D概率論420
附錄E信息論433
索引439