內容簡介
PyTorch作為深度學習領域逐漸崛起的新星,其易用性及Python友好性深受廣大算法愛好者的喜愛,無論是在學術領域還是在工業領域,PyTorch都已經成為算法研究的首選。
《PyTorch深度學習實戰:從才提謎承新手小白到數據科學家》以深度學習為核心,詳細講解PyTorch技術堆疊,力求使用最直白的語言,帶領更多的小白學員入門直至精通深度學習。本書包括10章,前5章主要講解深度學習中的基本格良淋算法及概念,通過使用PyTorch實現經典的神經網路並輔以“加油站”補充求禁肯數學知識,力求使每個知識點、每個章節、每個實驗都能在小白學員腦海中留下深刻的印象榜少朽,做到看了能做、做了能會、會了能用。後5章作為PyTorch的進階,主要介紹使用PyTorch構建深度神經網路、使用HMM實現中文分詞、訓練對話機器人等實驗。
本書引入了當下非常流行的自然語言預訓練模型,如ELMo、BERT等,使讀者能夠使用自然語言利器AllenNLP及高層框架FastAI。最後講解當下非常流行的大型圖嵌入技術,對知識圖譜感興趣的讀者可以做深估擔虹慨入研究。
圖書目錄
第1章 初識PyTorch 1
1.1 神經網路發展簡史 1
1.1.1 神經網路的前世今生 1
1.1.2 深度學習框架對比 3
1.2 環境安裝 6
1.2.1 Python環境的選擇及安裝 6
1.2.2 PyTorch 1.2的安裝 8
1.2.3 開發環境IDE 10
1.3 PyTorch的核心墓駝祝概念 11
1.3.1 PyTorch的基本概念 11
1.3.2 自動微分 16
1.3.3 PyTorch的核心模組 19
1.4 實驗室小試牛刀敬凳 20
1.4.1 塔珀自指公式 20
1.4.2 看看你畢業了能拿多少 22
1.5 加油站之高等數學知識回顧 39
1.5.1 函式基礎知識 39
1.5.2 常見的導數公式 45
第2章 機器學習快速入門 49
2.1 機器學習的分類 49
2.1.1 監督學習 49
2.1.2 半監督學習 51
2.1.3 無監督學習 51
2.1.4 強化學習 52
2.2 機器學習的常見概念 54
2.2.1 缺失值處理 54
2.2.2 數據標準化與數據正則化 56
2.2.3 交叉驗證 59
2.2.4 過擬合與欠擬合 61
2.3 神經網路 62
2.3.1 神經網路的生物學發現與編程模擬 62
2.3.2 人工神經網路的核心思想 69
2.4 實現線性回歸、多項式回歸和邏輯回歸 70
2.4.1 PyTorch實現線性回歸 70
2.4.2 PyTorch實現多項式回歸 73
2.4.3 PyTorch實現邏輯回歸 77
2.5 加油站之高等數學知識回顧 82
2.5.1 方嚮導數和梯度 82
2.5.2 微分及積分 84
2.5.3 牛頓-萊布尼茲公式 87
第3章 PyTorch與科學計算 89
3.1 運算元字典 89
3.1.1 基本方法 89
3.1.2 索引、切片、連線和換位 91
3.1.3 隨機抽樣 95
3.1.4 數據持久化與高並發 97
3.1.5 元素級別的數學計算 98
3.1.6 規約計算 102
3.1.7 數值比較運算 104
3.1.8 矩陣運算 106
3.2 廣播機制 110
3.2.1 自動廣播規則 110
3.2.2 廣播計算規則 111
3.3 GPU設備及並行編程 112
3.3.1 device和cuda.device的基本用法 112
3.3.2 CPU設備到GPU設備 113
3.3.3 固定緩衝區 115
3.3.4 自動設備感知 117
3.3.5 並發編程 118
3.4 實驗室小試牛刀之輕鬆搞定圖片分類 121
3.4.1 softmax分類簡介 123
3.4.2 定義網路結構 126
3.5 加油站之高等數學知識回顧 133
3.5.1 泰勒公式及其思想 133
3.5.2 拉格朗日乘子法及其思想 138
第4章 激活函式、損失函式、最佳化器及數據載入 140
4.1 激活函式 140
4.1.1 Sigmoid 141
4.1.2 tanh 143
4.1.3 ReLU及其變形 145
4.1.4 MaxOut 148
4.2 損失函式 150
4.2.1 L1範數損失 150
4.2.2 均方誤差損失 151
4.2.3 二分類交叉熵損失 152
4.2.4 CrossEntropyLoss和NLLLoss計算交叉熵損失 152
4.2.5 KL散度損失 154
4.2.6 餘弦相似度損失 155
4.2.7 多分類多標籤損失 156
4.3 最佳化器 157
4.3.1 BGD 157
4.3.2 SGD 158
4.3.3 MBGD 159
4.3.4 Momentum 160
4.3.5 NAG 161
4.3.6 Adagrad 161
4.3.7 Adadelta 162
4.3.8 Adam 163
4.4 數據載入 164
4.4.1 Dataset數據集 164
4.4.2 DataLoader數據載入 167
4.5 初探卷積神經網路 169
4.5.1 知識科普:卷積過程及物理意義 169
4.5.2 卷積神經網路 173
4.5.3 stride和padding 179
4.5.4 膨脹卷積神經網路 180
4.5.5 池化 182
4.6 實驗室小試牛刀 184
4.6.1 設計卷積神經網路 184
4.6.2 定義卷積神經網路 185
4.6.3 模型訓練 186
4.6.4 理解卷積神經網路在學什麼 189
第5章 PyTorch深度神經網路 201
5.1 計算機視覺工具包 201
5.2 訓練過程的可視化 204
5.2.1 TensorBoard 204
5.2.2 Visdom 210
5.3 深度神經網路 212
5.3.1 LeNet 212
5.3.2 AlexNet 214
5.3.3 ZF-Net 217
5.3.4 VGG-Nets 219
5.3.5 GoogLeNet 222
5.3.6 ResNet 224
5.3.7 DenseNet 226
5.4 循環神經網路 228
5.4.1 循環神經網路基礎模型 229
5.4.2 LSTM 233
5.4.3 GRU 238
5.5 實驗室小試牛刀 240
5.5.1 數據準備 241
5.5.2 GRU網路設計 242
5.5.3 模型訓練 244
5.5.4 模型預測 245
5.6 加油站之機率論基礎知識回顧 246
5.6.1 離散型隨機變數和連續型隨機變數 246
5.6.2 機率論常用概念 251
5.6.3 二維隨機變數 253
5.6.4 邊緣分布 255
5.6.5 期望和方差 257
5.6.6 大數定理 258
5.6.7 馬爾可夫不等式及切比雪夫不等式 259
5.6.8 中心極限定理 260
第6章 自然語言處理 261
6.1 自然語言基礎 261
6.1.1 自然語言發展史 261
6.1.2 自然語言處理中的常見任務 264
6.1.3 統計自然語言理論 266
6.1.4 使用隱馬爾可夫模型實現中文分詞 278
6.2 提取關鍵字 281
6.2.1 TF-IDF 281
6.2.2 TextRank 283
6.2.3 主題模型 284
6.3 Word2vec和詞嵌入 285
6.3.1 N-Gram模型 286
6.3.2 詞袋模型 287
6.3.3 Word2vec詞向量的密集表示 288
6.3.4 使用Word2vec生成詞向量 297
6.3.5 Word2vec源碼調試 299
6.3.6 在PyTorch中使用詞向量 300
6.4 變長序列處理 302
6.4.1 pack_padded_sequence壓縮 304
6.4.2 pad_packed_sequence解壓縮 306
6.5 Encoder-Decoder框架和注意力機制 307
6.5.1 Encoder-Decoder框架 308
6.5.2 注意力機制 309
6.6 實驗室小試牛刀之對話機器人 312
6.6.1 中文對話語料 313
6.6.2 構建問答詞典 313
6.6.3 DataLoader數據載入 315
6.6.4 Encoder雙向多層GRU 318
6.6.5 運用注意力機制 320
6.6.6 Decoder多層GRU 321
6.6.7 模型訓練 323
6.6.8 答案搜尋及效果展示 324
6.7 加油站之常見的幾種機率分布 326
6.7.1 二項分布 326
6.7.2 常態分配 327
6.7.3 均勻分布 328
6.7.4 泊松分布 330
6.7.5 卡方分布 332
6.7.6 Beta分布 333
第7章 自然語言的曙光:預訓練模型 336
7.1 預訓練模型的套用 336
7.2 從詞嵌入到ELMo 337
7.2.1 詞嵌入頭上的烏雲 337
7.2.2 ELMo 338
7.3 從ELMo模型到GPT模型 341
7.3.1 GPT模型 341
7.3.2 使用GPT模型 342
7.4 從GPT模型到BERT模型 344
第8章 自然語言處理利器:AllenNLP 349
8.1 中文詞性標註 349
8.1.1 DatasetReader數據讀取 350
8.1.2 定義Model模型 352
8.1.3 模型訓練 354
8.1.4 模型預測 355
8.1.5 模型保存和載入 356
8.2 AllenNLP 使用Config Files 356
8.2.1 參數解析 357
8.2.2 註冊數據讀取器和模型 357
8.2.3 定義Jsonnet配置檔案 357
8.2.4 命令行工具 359
8.2.5 特徵融合 360
8.2.6 製作線上Demo 362
第9章 FastAI高層深度學習框架 364
9.1 FastAI框架中的原語 364
9.2 在FastAI框架中使用BERT模型完成中文分類 365
9.2.1 分詞器 365
9.2.2 定義字典 368
9.2.3 數據準備 368
9.2.4 構建Databunch和Learner 370
9.2.5 模型訓練 371
9.2.6 模型保存和載入 371
9.2.7 模型預測 372
9.2.8 製作Rest接口提供服務 372
第10章 PyTorch Big Graph嵌入 374
10.1 PyTorch Big Graph簡介 374
10.1.1 PBG模型 375
10.1.2 模型的表示 376
10.1.3 正樣本、負樣本及損失函式 377
10.1.4 分散式訓練 377
10.1.5 批量負採樣 379
10.2 PBG實踐套用 379
10.2.1 模型配置檔案 380
10.2.2 劃分訓練集和測試集 381
10.2.3 模型訓練和驗證 382
10.2.4 圖嵌入向量及套用 384
作者簡介
張敏,2015年開始從事大數據行業,多年來一直致力於數據分析和算法開發。2017年開始接觸線上教育,目前全網學員總數破100萬,相繼在51CTO、
騰訊課堂、網易課堂、CSDN等平台開啟教學。在51CTO平台上的SPARK課程銷量做到行業類目前列,曾在多家大公司從事數據挖掘工作,擁有大數據經驗和底層數據思維。
2.4 實現線性回歸、多項式回歸和邏輯回歸 70
2.4.1 PyTorch實現線性回歸 70
2.4.2 PyTorch實現多項式回歸 73
2.4.3 PyTorch實現邏輯回歸 77
2.5 加油站之高等數學知識回顧 82
2.5.1 方嚮導數和梯度 82
2.5.2 微分及積分 84
2.5.3 牛頓-萊布尼茲公式 87
第3章 PyTorch與科學計算 89
3.1 運算元字典 89
3.1.1 基本方法 89
3.1.2 索引、切片、連線和換位 91
3.1.3 隨機抽樣 95
3.1.4 數據持久化與高並發 97
3.1.5 元素級別的數學計算 98
3.1.6 規約計算 102
3.1.7 數值比較運算 104
3.1.8 矩陣運算 106
3.2 廣播機制 110
3.2.1 自動廣播規則 110
3.2.2 廣播計算規則 111
3.3 GPU設備及並行編程 112
3.3.1 device和cuda.device的基本用法 112
3.3.2 CPU設備到GPU設備 113
3.3.3 固定緩衝區 115
3.3.4 自動設備感知 117
3.3.5 並發編程 118
3.4 實驗室小試牛刀之輕鬆搞定圖片分類 121
3.4.1 softmax分類簡介 123
3.4.2 定義網路結構 126
3.5 加油站之高等數學知識回顧 133
3.5.1 泰勒公式及其思想 133
3.5.2 拉格朗日乘子法及其思想 138
第4章 激活函式、損失函式、最佳化器及數據載入 140
4.1 激活函式 140
4.1.1 Sigmoid 141
4.1.2 tanh 143
4.1.3 ReLU及其變形 145
4.1.4 MaxOut 148
4.2 損失函式 150
4.2.1 L1範數損失 150
4.2.2 均方誤差損失 151
4.2.3 二分類交叉熵損失 152
4.2.4 CrossEntropyLoss和NLLLoss計算交叉熵損失 152
4.2.5 KL散度損失 154
4.2.6 餘弦相似度損失 155
4.2.7 多分類多標籤損失 156
4.3 最佳化器 157
4.3.1 BGD 157
4.3.2 SGD 158
4.3.3 MBGD 159
4.3.4 Momentum 160
4.3.5 NAG 161
4.3.6 Adagrad 161
4.3.7 Adadelta 162
4.3.8 Adam 163
4.4 數據載入 164
4.4.1 Dataset數據集 164
4.4.2 DataLoader數據載入 167
4.5 初探卷積神經網路 169
4.5.1 知識科普:卷積過程及物理意義 169
4.5.2 卷積神經網路 173
4.5.3 stride和padding 179
4.5.4 膨脹卷積神經網路 180
4.5.5 池化 182
4.6 實驗室小試牛刀 184
4.6.1 設計卷積神經網路 184
4.6.2 定義卷積神經網路 185
4.6.3 模型訓練 186
4.6.4 理解卷積神經網路在學什麼 189
第5章 PyTorch深度神經網路 201
5.1 計算機視覺工具包 201
5.2 訓練過程的可視化 204
5.2.1 TensorBoard 204
5.2.2 Visdom 210
5.3 深度神經網路 212
5.3.1 LeNet 212
5.3.2 AlexNet 214
5.3.3 ZF-Net 217
5.3.4 VGG-Nets 219
5.3.5 GoogLeNet 222
5.3.6 ResNet 224
5.3.7 DenseNet 226
5.4 循環神經網路 228
5.4.1 循環神經網路基礎模型 229
5.4.2 LSTM 233
5.4.3 GRU 238
5.5 實驗室小試牛刀 240
5.5.1 數據準備 241
5.5.2 GRU網路設計 242
5.5.3 模型訓練 244
5.5.4 模型預測 245
5.6 加油站之機率論基礎知識回顧 246
5.6.1 離散型隨機變數和連續型隨機變數 246
5.6.2 機率論常用概念 251
5.6.3 二維隨機變數 253
5.6.4 邊緣分布 255
5.6.5 期望和方差 257
5.6.6 大數定理 258
5.6.7 馬爾可夫不等式及切比雪夫不等式 259
5.6.8 中心極限定理 260
第6章 自然語言處理 261
6.1 自然語言基礎 261
6.1.1 自然語言發展史 261
6.1.2 自然語言處理中的常見任務 264
6.1.3 統計自然語言理論 266
6.1.4 使用隱馬爾可夫模型實現中文分詞 278
6.2 提取關鍵字 281
6.2.1 TF-IDF 281
6.2.2 TextRank 283
6.2.3 主題模型 284
6.3 Word2vec和詞嵌入 285
6.3.1 N-Gram模型 286
6.3.2 詞袋模型 287
6.3.3 Word2vec詞向量的密集表示 288
6.3.4 使用Word2vec生成詞向量 297
6.3.5 Word2vec源碼調試 299
6.3.6 在PyTorch中使用詞向量 300
6.4 變長序列處理 302
6.4.1 pack_padded_sequence壓縮 304
6.4.2 pad_packed_sequence解壓縮 306
6.5 Encoder-Decoder框架和注意力機制 307
6.5.1 Encoder-Decoder框架 308
6.5.2 注意力機制 309
6.6 實驗室小試牛刀之對話機器人 312
6.6.1 中文對話語料 313
6.6.2 構建問答詞典 313
6.6.3 DataLoader數據載入 315
6.6.4 Encoder雙向多層GRU 318
6.6.5 運用注意力機制 320
6.6.6 Decoder多層GRU 321
6.6.7 模型訓練 323
6.6.8 答案搜尋及效果展示 324
6.7 加油站之常見的幾種機率分布 326
6.7.1 二項分布 326
6.7.2 常態分配 327
6.7.3 均勻分布 328
6.7.4 泊松分布 330
6.7.5 卡方分布 332
6.7.6 Beta分布 333
第7章 自然語言的曙光:預訓練模型 336
7.1 預訓練模型的套用 336
7.2 從詞嵌入到ELMo 337
7.2.1 詞嵌入頭上的烏雲 337
7.2.2 ELMo 338
7.3 從ELMo模型到GPT模型 341
7.3.1 GPT模型 341
7.3.2 使用GPT模型 342
7.4 從GPT模型到BERT模型 344
第8章 自然語言處理利器:AllenNLP 349
8.1 中文詞性標註 349
8.1.1 DatasetReader數據讀取 350
8.1.2 定義Model模型 352
8.1.3 模型訓練 354
8.1.4 模型預測 355
8.1.5 模型保存和載入 356
8.2 AllenNLP 使用Config Files 356
8.2.1 參數解析 357
8.2.2 註冊數據讀取器和模型 357
8.2.3 定義Jsonnet配置檔案 357
8.2.4 命令行工具 359
8.2.5 特徵融合 360
8.2.6 製作線上Demo 362
第9章 FastAI高層深度學習框架 364
9.1 FastAI框架中的原語 364
9.2 在FastAI框架中使用BERT模型完成中文分類 365
9.2.1 分詞器 365
9.2.2 定義字典 368
9.2.3 數據準備 368
9.2.4 構建Databunch和Learner 370
9.2.5 模型訓練 371
9.2.6 模型保存和載入 371
9.2.7 模型預測 372
9.2.8 製作Rest接口提供服務 372
第10章 PyTorch Big Graph嵌入 374
10.1 PyTorch Big Graph簡介 374
10.1.1 PBG模型 375
10.1.2 模型的表示 376
10.1.3 正樣本、負樣本及損失函式 377
10.1.4 分散式訓練 377
10.1.5 批量負採樣 379
10.2 PBG實踐套用 379
10.2.1 模型配置檔案 380
10.2.2 劃分訓練集和測試集 381
10.2.3 模型訓練和驗證 382
10.2.4 圖嵌入向量及套用 384
作者簡介
張敏,2015年開始從事大數據行業,多年來一直致力於數據分析和算法開發。2017年開始接觸線上教育,目前全網學員總數破100萬,相繼在51CTO、
騰訊課堂、網易課堂、CSDN等平台開啟教學。在51CTO平台上的SPARK課程銷量做到行業類目前列,曾在多家大公司從事數據挖掘工作,擁有大數據經驗和底層數據思維。