PyTorch深度學習和圖神經網路卷1 基礎知識

PyTorch深度學習和圖神經網路卷1 基礎知識

《PyTorch深度學習和圖神經網路卷1 基礎知識》是2021年人民郵電出版社出版的圖書,作者是李金洪。

基本介紹

  • 中文名:PyTorch深度學習和圖神經網路卷1 基礎知識
  • 作者:李金洪
  • 出版時間:2021年12月1日
  • 出版社人民郵電出版社
  • ISBN:9787115549839
  • 開本:16 開
  • 裝幀:平裝
內容簡介,作者簡介,圖書目錄,

內容簡介

本書從基礎知識開始,介紹深度學習與圖神經網路相關的一系列技術與實現方法,主要內容包括PyTorch的使用、神經網路的原理、神經網路的基礎模型、圖神經網路的基礎模型。書中側重講述與深度學習基礎相關的網路模型和算法思想,以及圖神經網路的原理,且針對這些知識點給出在PyTorch框架上的實現代碼。
本書適合想學習圖神經網路的技術人員、人工智慧從業人員閱讀,也適合作為大專院校相關專業的師生用書和培訓班的教材。

作者簡介

李金洪, 精通C、Python、Java語言,擅長神經網路、算法、協定分析、移動網際網路安全架構等技術,先後擔任過CAD算法工程師、架構師、項目經理、部門經理等職位。參與過深度學習領域某移動網際網路後台的OCR項目,某娛樂節目機器人的語音識別、聲紋識別項目,金融領域的若干分類項目。

圖書目錄

第 一篇 入門——PyTorch基礎
第 1章 快速了解人工智慧與PyTorch 3
1.1 圖神經網路與深度學習 4
1.1.1 深度神經網路 4
1.1.2 圖神經網路 4
1.2 PyTorch是做什麼的 4
1.3 PyTorch的特點 5
1.4 PyTorch與TensorFlow各有所長 6
1.5 如何使用本書學好深度學習 8
第 2章 搭建開發環境 9
2.1 下載及安裝Anaconda 10
2.1.1 下載Anaconda開發工具 10
2.1.2 安裝Anaconda開發工具 10
2.1.3 安裝Anaconda開發工具時的注意事項 11
2.2 安裝PyTorch 11
2.2.1 打開PyTorch官網 12
2.2.2 配置PyTorch安裝命令 12
2.2.3 使用配置好的命令安裝PyTorch 12
2.2.4 配置PyTorch的鏡像源 13
2.3 熟悉Anaconda 3的開發工具 15
2.3.1 快速了解Spyder 15
2.3.2 快速了解Jupyter Notebook 17
2.4 測試開發環境 18
第3章 PyTorch基本開發步驟——用邏輯回歸擬合二維數據 19
3.1 實例1:從一組看似混亂的數據中找出規律 20
3.1.1 準備數據 20
3.1.2 定義網路模型 21
3.1.3 搭建網路模型 22
3.1.4 訓練模型 23
3.1.5 可視化訓練結果 23
3.1.6 使用及評估模型 24
3.1.7 可視化模型 25
3.2 模型是如何訓練出來的 26
3.2.1 模型里的內容及意義 26
3.2.2 模型內部數據流向 27
3.3 總結 27
第4章 快速上手PyTorch 29
4.1 神經網路中的幾個基本數據類型 30
4.2 張量類的基礎 30
4.2.1 定義張量的方法 30
4.2.2 張量的類型 32
4.2.3 張量的type()方法 33
4.3 張量與NumPy 34
4.3.1 張量與NumPy類型數據的相互轉換 34
4.3.2 張量與NumPy各自的形狀獲取 34
4.3.3 張量與NumPy各自的切片操作 34
4.3.4 張量與NumPy類型數據相互轉換間的陷阱 35
4.4 在CPU和GPU控制的記憶體中定義張量 36
4.4.1 將CPU記憶體中的張量轉化到GPU記憶體中 36
4.4.2 直接在GPU記憶體中定義張量 36
4.4.3 使用to()方法來指定設備 36
4.4.4 使用環境變數CUDA_VISIBLE_DEVICES來指定設備 36
4.5 生成隨機值張量 37
4.5.1 設定隨機值種子 37
4.5.2 按照指定形狀生成隨機值 37
4.5.3 生成線性空間的隨機值 37
4.5.4 生成對數空間的隨機值 38
4.5.5 生成未初始化的矩陣 38
4.5.6 更多的隨機值生成函式 38
4.6 張量間的數學運算 38
4.6.1 PyTorch的運算函式 39
4.6.2 PyTorch的自變化運算函式 39
4.7 張量間的數據操作 39
4.7.1 用torch.reshape()函式實現數據維度變換 39
4.7.2 實現張量數據的矩陣轉置 40
4.7.3 view()方法與contiguous()方法 40
4.7.4 用torch.cat()函式實現數據連線 41
4.7.5 用torch.chunk()函式實現數據均勻分割 41
4.7.6 用torch.split()函式實現數據不均勻分割 42
4.7.7 用torch.gather()函式對張量數據進行檢索 42
4.7.8 按照指定閾值對張量進行過濾 42
4.7.9 找出張量中的非零值索引 43
4.7.10 根據條件進行多張量取值 43
4.7.11 根據閾值進行數據截斷 43
4.7.12 獲取數據中最大值、最小值的索引 43
4.8 Variable類型與自動微分模組 44
4.8.1 自動微分模組簡介 44
4.8.2 Variable對象與張量對象之間的轉化 44
4.8.3 用no_grad()與enable_grad()控制梯度計算 45
4.8.4 函式torch.no_grad()介紹 45
4.8.5 函式enable_grad()與no_grad()的嵌套 46
4.8.6 用set_grad_enabled()函式統一管理梯度計算 47
4.8.7 Variable對象的grad_fn屬性 47
4.8.8 Variable對象的is_leaf屬性 48
4.8.9 用backward()方法自動求導 48
4.8.10 自動求導的作用 49
4.8.11 用detach()方法將Variable對象分離成葉子節點 49
4.8.12 volatile屬性擴展 50
4.9 定義模型結構的步驟與方法 50
4.9.1 代碼實現: Module類的使用方法 50
4.9.2 模型中的參數Parameters類 52
4.9.3 為模型添加參數 53
4.9.4 從模型中獲取參數 53
4.9.5 保存與載入模型 56
4.9.6 模型結構中的鉤子函式 57
4.10 模型的網路層 58
第5章 神經網路的基本原理與實現 59
5.1 了解深度學習中的神經網路與神經元 60
5.1.1 了解單個神經元 60
5.1.2 生物神經元與計算機神經元模型的結構相似性 62
5.1.3 生物神經元與計算機神經元模型的工作流程相似性 63
5.1.4 神經網路的形成 63
5.2 深度學習中的基礎神經網路模型 63
5.3 什麼是全連線神經網路 64
5.3.1 全連線神經網路的結構 64
5.3.2 實例2:分析全連線神經網路中每個神經元的作用 64
5.3.3 全連線神經網路的擬合原理 66
5.3.4 全連線神經網路的設計思想 67
5.4 激活函式——加入非線性因素,彌補線性模型缺陷 68
5.4.1 Sigmoid函式 68
5.4.2 tanh函式 69
5.4.3 ReLU函式 70
5.4.4 激活函式的多種形式 72
5.4.5 擴展1:更好的激活函式(Swish與Mish) 73
5.4.6 擴展2:更適合NLP任務的激活函式(GELU) 74
5.5 激活函式總結 75
5.6 訓練模型的步驟與方法 76
5.7 神經網路模組(nn)中的損失函式 76
5.7.1 L1損失函式 76
5.7.2 均值平方差(MSE)損失函式 77
5.7.3 交叉熵損失(CrossEntropyLoss)函式 77
5.7.4 其他的損失函式 78
5.7.5 總結:損失算法的選取 79
5.8 Softmax算法——處理分類問題 79
5.8.1 什麼是Softmax 80
5.8.2 Softmax原理 80
5.8.3 常用的Softmax接口 80
5.8.4 實例3:Softmax與交叉熵的套用 81
5.8.5 總結:更好地認識Softmax 82
5.9 最佳化器模組 82
5.9.1 了解反向傳播與BP算法 82
5.9.2 最佳化器與梯度下降 83
5.9.3 最佳化器的類別 83
5.9.4 最佳化器的使用方法 83
5.9.5 查看最佳化器的參數結構 84
5.9.6 常用的最佳化器——Adam 85
5.9.7 更好的最佳化器——Ranger 85
5.9.8 如何選取最佳化器 85
5.10 退化學習率——在訓練的速度與精度之間找到平衡 86
5.10.1 設定學習率的方法——退化學習率 86
5.10.2 退化學習率接口(lr_scheduler) 87
5.10.3 使用lr_scheduler接口實現多種退化學習率 88
5.11 實例4:預測鐵達尼號船上的生存乘客 91
5.11.1 載入樣本 91
5.11.2 樣本的特徵分析——離散數據與連續數據 92
5.11.3 處理樣本中的離散數據和Nan值 93
5.11.4 分離樣本和標籤並製作成數據集 95
5.11.5 定義Mish激活函式與多層全連線網路 96
5.11.6 訓練模型並輸出結果 97
第二篇 基礎——神經網路的監督訓練與無監督訓練
第6章 實例5:識別黑白圖中的服裝圖案 101
6.1 熟悉樣本:了解Fashion-MNIST數據集 102
6.1.1 Fashion-MNIST的起源 102
6.1.2 Fashion-MNIST的結構 102
6.1.3 手動下載Fashion-MNIST數據集 103
6.1.4 代碼實現:自動下載Fashion-MNIST數據集 103
6.1.5 代碼實現:讀取及顯示Fashion-MNIST中的數據 104
6.2 製作批次數據集 105
6.2.1 數據集封裝類DataLoader 105
6.2.2 代碼實現:按批次封裝Fashion-MNIST數據集 106
6.2.3 代碼實現:讀取批次數據集 107
6.3 構建並訓練模型 108
6.3.1 代碼實現:定義模型類 108
6.3.2 代碼實現:定義損失的計算方法及最佳化器 110
6.3.3 代碼實現:訓練模型 110
6.3.4 代碼實現:保存模型 111
6.4 載入模型,並用其進行預測 111
6.5 評估模型 112
6.6 擴展:多顯示卡並行訓練 113
6.6.1 代碼實現:多顯示卡訓練 113
6.6.2 多顯示卡訓練過程中,保存與讀取模型檔案的注意事項 115
6.6.3 在切換設備環境時,保存與讀取模型檔案的注意事項 116
6.6.4 處理顯存殘留問題 116
第7章 監督學習中的神經網路 119
7.1 從視覺的角度理解卷積神經網路 120
7.1.1 生物視覺系統原理 120
7.1.2 微積分 120
7.1.3 離散微分與離散積分 120
7.1.4 視覺神經網路中的離散積分 121
7.2 卷積神經網路的結構 121
7.2.1 卷積神經網路的工作過程 122
7.2.2 卷積神經網路與全連線網路的區別 123
7.2.3 了解1D卷積、2D卷積和3D卷積 123
7.2.4 實例分析:Sobel運算元的原理 123
7.2.5 深層神經網路中的卷積核 126
7.2.6 理解卷積的數學意義——卷積分 126
7.3 卷積神經網路的實現 127
7.3.1 了解卷積接口 127
7.3.2 卷積操作的類型 129
7.3.3 卷積參數與卷積結果的計算規則 130
7.3.4 實例6:卷積函式的使用 130
7.3.5 實例7:使用卷積提取圖片的輪廓 135
7.4 深層卷積神經網路 138
7.4.1 深層卷積神經網路組成 138
7.4.2 池化操作 140
7.4.3 了解池化接口 140
7.4.4 實例8:池化函式的使用 141
7.4.5 實例9:搭建卷積神經網路 143
7.5 循環神經網路結構 145
7.5.1 了解人的記憶原理 145
7.5.2 循環神經網路的套用領域 146
7.5.3 循環神經網路的正向傳播過程 147
7.5.4 BP算法與BPTT算法的原理 148
7.5.5 實例10:簡單循環神經網路實現——設計一個退位減法器 149
7.6 常見的循環神經網路單元及結構 154
7.6.1 長短記憶(LSTM)單元 155
7.6.2 門控循環單元(GRU) 157
7.6.3 只有忘記門的LSTM(JANET)單元 158
7.6.4 獨立循環(IndRNN)單元 158
7.6.5 雙向RNN結構 159
7.7 實例11:用循環神經網路訓練語言模型 160
7.7.1 什麼是語言模型 161
7.7.2 詞表與詞向量 161
7.7.3 詞向量的原理與實現 161
7.7.4 NLP中多項式分布 162
7.7.5 循環神經網路的實現 163
7.7.6 實現語言模型的思路與步驟 164
7.7.7 代碼實現:準備樣本 165
7.7.8 代碼實現:構建循環神經網路(RNN)模型 167
7.7.9 代碼實現:實例化模型類,並訓練模型 168
7.7.10 代碼實現:運行模型生成句子 171
7.8 過擬合問題及最佳化技巧 172
7.8.1 實例12:訓練具有過擬合問題的模型 172
7.8.2 改善模型過擬合的方法 175
7.8.3 了解正則化 175
7.8.4 實例13:用L2正則改善模型的過擬合狀況 176
7.8.5 實例14:通過增大數據集改善模型的過擬合狀況 178
7.8.6 Dropout方法 179
7.8.7 實例15: 通過Dropout方法改善模型的過擬合狀況 180
7.8.8 全連線網路的深淺與泛化能力的聯繫 182
7.8.9 了解批量歸一化(BN)算法 182
7.8.10 實例16: 手動實現批量歸一化的計算方法 185
7.8.11 實例17: 通過批量歸一化方法改善模型的過擬合狀況 187
7.8.12 使用批量歸一化方法時的注意 事項 188
7.8.13 擴展:多種批量歸一化算法介紹 188
7.9 神經網路中的注意力機制 189
7.9.1 注意力機制的實現 189
7.9.2 注意力機制的軟、硬模式 190
7.9.3 注意力機制模型的原理 190
7.9.4 多頭注意力機制 191
7.9.5 自注意力機制 192
7.10 實例18:利用注意力循環神經網路對圖片分類 192
7.10.1 循環神經網路處理圖片分類任務的原理 192
7.10.2 代碼實現:搭建LSTM網路模型 193
7.10.3 代碼實現:構建注意力機制類 193
7.10.4 代碼實現:構建輸入數據並訓練模型 196
7.10.5 使用並評估模型 197
7.10.6 擴展1:使用梯度剪輯技巧最佳化訓練過程 197
7.10.7 擴展2:使用JANET單元完成RNN 198
7.10.8 擴展3:使用IndRNN單元實現RNN 198
第8章 無監督學習中的神經網路 199
8.1 快速了解信息熵 200
8.2 通用的無監督模型——自編碼神經網路與對抗神經網路 205
8.3 自編碼神經網路 206
8.4 實例19:用變分自編碼神經網路模型生成模擬數據 208
8.5 實例20:用條件變分自編碼神經網路生成可控模擬數據 216
8.6 對抗神經網路 219
8.7 實例21:用WGAN-gp模型生成模擬數據 226
8.8 實例22:用條件GAN生成可控模擬數據 239
8.9 實例23:實現帶有W散度的GAN——WGAN-div模型 241
8.10 散度在神經網路中的套用 243
8.11 實例25:用最大化深度互信息模型執行圖片搜尋器 253
第9章 快速了解圖神經網路——少量樣本也可以訓練模型 269
9.1 圖神經網路的相關基礎知識 270
9.2 矩陣的基礎 272
9.3 鄰接矩陣的幾種操作 275
9.4 實例26:用圖卷積神經網路為論文分類 278
9.5 圖卷積神經網路 290
9.6 擴展實例:用Multi-sample Dropout最佳化模型的訓練速度 291
9.7 從圖神經網路的視角看待深度學習 294
9.8 圖神經網路使用拉普拉斯矩陣的原因 295
第 10章 基於空間域的圖神經網路實現 297
10.1 重新認識圖卷積神經網路 298
10.2 實例27:用圖注意力神經網路為論文分類 300
10.3 圖神經網路常用庫——DGL庫 305
10.4 DGLGraph圖的基本操作 308
10.5 實例28:用帶有殘差結構的多層GAT模型實現論文分類 318
10.6 圖卷積模型的缺陷 327
10.7 實例29:用簡化圖卷積模型實現論文分類 329
10.8 實例30:用圖濾波神經網路模型實現論文分類 334
10.9 實例31:用深度圖互信息模型實現論文分類 337
10.10 實例32:用圖同構網路模型實現論文分類 344
10.11 實例33:用APPNP模型實現論文分類 347
10.12 實例34:用JKNet模型實現論文分類 351
10.13 總結 355

相關詞條

熱門詞條

聯絡我們