關于我們
書單推薦
新書推薦
|
PyTorch深度學習和圖神經(jīng)網(wǎng)絡 卷1 基礎知識
本書從基礎知識開始,介紹深度學習與圖神經(jīng)網(wǎng)絡相關的一系列技術與實現(xiàn)方法,主要內(nèi)容包括PyTorch的使用、神經(jīng)網(wǎng)絡的原理、神經(jīng)網(wǎng)絡的基礎模型、圖神經(jīng)網(wǎng)絡的基礎模型。書中側(cè)重講述與深度學習基礎相關的網(wǎng)絡模型和算法思想,以及圖神經(jīng)網(wǎng)絡的原理,且針對這些知識點給出在PyTorch框架上的實現(xiàn)代碼。
本書適合想學習圖神經(jīng)網(wǎng)絡的技術人員、人工智能從業(yè)人員閱讀,也適合作為大專院校相關專業(yè)的師生用書和培訓班的教材。
介紹深度學習與圖神經(jīng)網(wǎng)絡相關的一系列技術與實現(xiàn)方法;
內(nèi)容涵蓋PyTorch的使用、神經(jīng)網(wǎng)絡的原理、神經(jīng)網(wǎng)絡的基礎模型、圖神經(jīng)網(wǎng)絡的原理、圖神經(jīng)網(wǎng)絡的基礎模型;
書中給出用PyTorch實現(xiàn)的網(wǎng)絡模型和算法實例代碼;
提供本書源代碼下載
李金洪, 精通C、Python、Java語言,擅長神經(jīng)網(wǎng)絡、算法、協(xié)議分析、移動互聯(lián)網(wǎng)安全架構(gòu)等技術,先后擔任過CAD算法工程師、架構(gòu)師、項目經(jīng)理、部門經(jīng)理等職位。參與過深度學習領域某移動互聯(lián)網(wǎng)后臺的OCR項目,某娛樂節(jié)目機器人的語音識別、聲紋識別項目,金融領域的若干分類項目。
目錄
第 一篇 入門——PyTorch基礎
第 1章 快速了解人工智能與PyTorch 3
1.1 圖神經(jīng)網(wǎng)絡與深度學習 4
1.1.1 深度神經(jīng)網(wǎng)絡 4
1.1.2 圖神經(jīng)網(wǎng)絡 4
1.2 PyTorch是做什么的 4
1.3 PyTorch的特點 5
1.4 PyTorch與TensorFlow各有所長 6
1.5 如何使用本書學好深度學習 8
第 2章 搭建開發(fā)環(huán)境 9
2.1 下載及安裝Anaconda 10
2.1.1 下載Anaconda開發(fā)工具 10
2.1.2 安裝Anaconda開發(fā)工具 10
2.1.3 安裝Anaconda開發(fā)工具時的注意事項 11
2.2 安裝PyTorch 11
2.2.1 打開PyTorch官網(wǎng) 12
2.2.2 配置PyTorch安裝命令 12
2.2.3 使用配置好的命令安裝PyTorch 12
2.2.4 配置PyTorch的鏡像源 13
2.3 熟悉Anaconda 3的開發(fā)工具 15
2.3.1 快速了解Spyder 15
2.3.2 快速了解Jupyter Notebook 17
2.4 測試開發(fā)環(huán)境 18
第3章 PyTorch基本開發(fā)步驟——用邏輯回歸擬合二維數(shù)據(jù) 19
3.1 實例1:從一組看似混亂的數(shù)據(jù)中找出規(guī)律 20
3.1.1 準備數(shù)據(jù) 20
3.1.2 定義網(wǎng)絡模型 21
3.1.3 搭建網(wǎng)絡模型 22
3.1.4 訓練模型 23
3.1.5 可視化訓練結(jié)果 23
3.1.6 使用及評估模型 24
3.1.7 可視化模型 25
3.2 模型是如何訓練出來的 26
3.2.1 模型里的內(nèi)容及意義 26
3.2.2 模型內(nèi)部數(shù)據(jù)流向 27
3.3 總結(jié) 27
第4章 快速上手PyTorch 29
4.1 神經(jīng)網(wǎng)絡中的幾個基本數(shù)據(jù)類型 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類型數(shù)據(jù)的相互轉(zhuǎn)換 34
4.3.2 張量與NumPy各自的形狀獲取 34
4.3.3 張量與NumPy各自的切片操作 34
4.3.4 張量與NumPy類型數(shù)據(jù)相互轉(zhuǎn)換間的陷阱 35
4.4 在CPU和GPU控制的內(nèi)存中定義張量 36
4.4.1 將CPU內(nèi)存中的張量轉(zhuǎn)化到GPU內(nèi)存中 36
4.4.2 直接在GPU內(nèi)存中定義張量 36
4.4.3 使用to()方法來指定設備 36
4.4.4 使用環(huán)境變量CUDA_VISIBLE_DEVICES來指定設備 36
4.5 生成隨機值張量 37
4.5.1 設置隨機值種子 37
4.5.2 按照指定形狀生成隨機值 37
4.5.3 生成線性空間的隨機值 37
4.5.4 生成對數(shù)空間的隨機值 38
4.5.5 生成未初始化的矩陣 38
4.5.6 更多的隨機值生成函數(shù) 38
4.6 張量間的數(shù)學運算 38
4.6.1 PyTorch的運算函數(shù) 39
4.6.2 PyTorch的自變化運算函數(shù) 39
4.7 張量間的數(shù)據(jù)操作 39
4.7.1 用torch.reshape()函數(shù)實現(xiàn)數(shù)據(jù)維度變換 39
4.7.2 實現(xiàn)張量數(shù)據(jù)的矩陣轉(zhuǎn)置 40
4.7.3 view()方法與contiguous()方法 40
4.7.4 用torch.cat()函數(shù)實現(xiàn)數(shù)據(jù)連接 41
4.7.5 用torch.chunk()函數(shù)實現(xiàn)數(shù)據(jù)均勻分割 41
4.7.6 用torch.split()函數(shù)實現(xiàn)數(shù)據(jù)不均勻分割 42
4.7.7 用torch.gather()函數(shù)對張量數(shù)據(jù)進行檢索 42
4.7.8 按照指定閾值對張量進行過濾 42
4.7.9 找出張量中的非零值索引 43
4.7.10 根據(jù)條件進行多張量取值 43
4.7.11 根據(jù)閾值進行數(shù)據(jù)截斷 43
4.7.12 獲取數(shù)據(jù)中最大值、最小值的索引 43
4.8 Variable類型與自動微分模塊 44
4.8.1 自動微分模塊簡介 44
4.8.2 Variable對象與張量對象之間的轉(zhuǎn)化 44
4.8.3 用no_grad()與enable_grad()控制梯度計算 45
4.8.4 函數(shù)torch.no_grad()介紹 45
4.8.5 函數(shù)enable_grad()與no_grad()的嵌套 46
4.8.6 用set_grad_enabled()函數(shù)統(tǒng)一管理梯度計算 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對象分離成葉子節(jié)點 49
4.8.12 volatile屬性擴展 50
4.9 定義模型結(jié)構(gòu)的步驟與方法 50
4.9.1 代碼實現(xiàn): Module類的使用方法 50
4.9.2 模型中的參數(shù)Parameters類 52
4.9.3 為模型添加參數(shù) 53
4.9.4 從模型中獲取參數(shù) 53
4.9.5 保存與載入模型 56
4.9.6 模型結(jié)構(gòu)中的鉤子函數(shù) 57
4.10 模型的網(wǎng)絡層 58
第5章 神經(jīng)網(wǎng)絡的基本原理與實現(xiàn) 59
5.1 了解深度學習中的神經(jīng)網(wǎng)絡與神經(jīng)元 60
5.1.1 了解單個神經(jīng)元 60
5.1.2 生物神經(jīng)元與計算機神經(jīng)元模型的結(jié)構(gòu)相似性 62
5.1.3 生物神經(jīng)元與計算機神經(jīng)元模型的工作流程相似性 63
5.1.4 神經(jīng)網(wǎng)絡的形成 63
5.2 深度學習中的基礎神經(jīng)網(wǎng)絡模型 63
5.3 什么是全連接神經(jīng)網(wǎng)絡 64
5.3.1 全連接神經(jīng)網(wǎng)絡的結(jié)構(gòu) 64
5.3.2 實例2:分析全連接神經(jīng)網(wǎng)絡中每個神經(jīng)元的作用 64
5.3.3 全連接神經(jīng)網(wǎng)絡的擬合原理 66
5.3.4 全連接神經(jīng)網(wǎng)絡的設計思想 67
5.4 激活函數(shù)——加入非線性因素,彌補線性模型缺陷 68
5.4.1 Sigmoid函數(shù) 68
5.4.2 tanh函數(shù) 69
5.4.3 ReLU函數(shù) 70
5.4.4 激活函數(shù)的多種形式 72
5.4.5 擴展1:更好的激活函數(shù)(Swish與Mish) 73
5.4.6 擴展2:更適合NLP任務的激活函數(shù)(GELU) 74
5.5 激活函數(shù)總結(jié) 75
5.6 訓練模型的步驟與方法 76
5.7 神經(jīng)網(wǎng)絡模塊(nn)中的損失函數(shù) 76
5.7.1 L1損失函數(shù) 76
5.7.2 均值平方差(MSE)損失函數(shù) 77
5.7.3 交叉熵損失(CrossEntropyLoss)函數(shù) 77
5.7.4 其他的損失函數(shù) 78
5.7.5 總結(jié):損失算法的選取 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 總結(jié):更好地認識Softmax 82
5.9 優(yōu)化器模塊 82
5.9.1 了解反向傳播與BP算法 82
5.9.2 優(yōu)化器與梯度下降 83
5.9.3 優(yōu)化器的類別 83
5.9.4 優(yōu)化器的使用方法 83
5.9.5 查看優(yōu)化器的參數(shù)結(jié)構(gòu) 84
5.9.6 常用的優(yōu)化器——Adam 85
5.9.7 更好的優(yōu)化器——Ranger 85
5.9.8 如何選取優(yōu)化器 85
5.10 退化學習率——在訓練的速度與精度之間找到平衡 86
5.10.1 設置學習率的方法——退化學習率 86
5.10.2 退化學習率接口(lr_scheduler) 87
5.10.3 使用lr_scheduler接口實現(xiàn)多種退化學習率 88
5.11 實例4:預測泰坦尼克號船上的生存乘客 91
5.11.1 載入樣本 91
5.11.2 樣本的特征分析——離散數(shù)據(jù)與連續(xù)數(shù)據(jù) 92
5.11.3 處理樣本中的離散數(shù)據(jù)和Nan值 93
5.11.4 分離樣本和標簽并制作成數(shù)據(jù)集 95
5.11.5 定義Mish激活函數(shù)與多層全連接網(wǎng)絡 96
5.11.6 訓練模型并輸出結(jié)果 97
第二篇 基礎——神經(jīng)網(wǎng)絡的監(jiān)督訓練與無監(jiān)督訓練
第6章 實例5:識別黑白圖中的服裝圖案 101
6.1 熟悉樣本:了解Fashion-MNIST數(shù)據(jù)集 102
6.1.1 Fashion-MNIST的起源 102
6.1.2 Fashion-MNIST的結(jié)構(gòu) 102
6.1.3 手動下載Fashion-MNIST數(shù)據(jù)集 103
6.1.4 代碼實現(xiàn):自動下載Fashion-MNIST數(shù)據(jù)集 103
6.1.5 代碼實現(xiàn):讀取及顯示Fashion-MNIST中的數(shù)據(jù) 104
6.2 制作批次數(shù)據(jù)集 105
6.2.1 數(shù)據(jù)集封裝類DataLoader 105
6.2.2 代碼實現(xiàn):按批次封裝Fashion-MNIST數(shù)據(jù)集 106
6.2.3 代碼實現(xiàn):讀取批次數(shù)據(jù)集 107
6.3 構(gòu)建并訓練模型 108
6.3.1 代碼實現(xiàn):定義模型類 108
6.3.2 代碼實現(xiàn):定義損失的計算方法及優(yōu)化器 110
6.3.3 代碼實現(xiàn):訓練模型 110
6.3.4 代碼實現(xiàn):保存模型 111
6.4 加載模型,并用其進行預測 111
6.5 評估模型 112
6.6 擴展:多顯卡并行訓練 113
6.6.1 代碼實現(xiàn):多顯卡訓練 113
6.6.2 多顯卡訓練過程中,保存與讀取模型文件的注意事項 115
6.6.3 在切換設備環(huán)境時,保存與讀取模型文件的注意事項 116
6.6.4 處理顯存殘留問題 116
第7章 監(jiān)督學習中的神經(jīng)網(wǎng)絡 119
7.1 從視覺的角度理解卷積神經(jīng)網(wǎng)絡 120
7.1.1 生物視覺系統(tǒng)原理 120
7.1.2 微積分 120
7.1.3 離散微分與離散積分 120
7.1.4 視覺神經(jīng)網(wǎng)絡中的離散積分 121
7.2 卷積神經(jīng)網(wǎng)絡的結(jié)構(gòu) 121
7.2.1 卷積神經(jīng)網(wǎng)絡的工作過程 122
7.2.2 卷積神經(jīng)網(wǎng)絡與全連接網(wǎng)絡的區(qū)別 123
7.2.3 了解1D卷積、2D卷積和3D卷積 123
7.2.4 實例分析:Sobel算子的原理 123
7.2.5 深層神經(jīng)網(wǎng)絡中的卷積核 126
7.2.6 理解卷積的數(shù)學意義——卷積分 126
7.3 卷積神經(jīng)網(wǎng)絡的實現(xiàn) 127
7.3.1 了解卷積接口 127
7.3.2 卷積操作的類型 129
7.3.3 卷積參數(shù)與卷積結(jié)果的計算規(guī)則 130
7.3.4 實例6:卷積函數(shù)的使用 130
7.3.5 實例7:使用卷積提取圖片的輪廓 135
7.4 深層卷積神經(jīng)網(wǎng)絡 138
7.4.1 深層卷積神經(jīng)網(wǎng)絡組成 138
7.4.2 池化操作 140
7.4.3 了解池化接口 140
7.4.4 實例8:池化函數(shù)的使用 141
7.4.5 實例9:搭建卷積神經(jīng)網(wǎng)絡 143
7.5 循環(huán)神經(jīng)網(wǎng)絡結(jié)構(gòu) 145
7.5.1 了解人的記憶原理 145
7.5.2 循環(huán)神經(jīng)網(wǎng)絡的應用領域 146
7.5.3 循環(huán)神經(jīng)網(wǎng)絡的正向傳播過程 147
7.5.4 BP算法與BPTT算法的原理 148
7.5.5 實例10:簡單循環(huán)神經(jīng)網(wǎng)絡實現(xiàn)——設計一個退位減法器 149
7.6 常見的循環(huán)神經(jīng)網(wǎng)絡單元及結(jié)構(gòu) 154
7.6.1 長短記憶(LSTM)單元 155
7.6.2 門控循環(huán)單元(GRU) 157
7.6.3 只有忘記門的LSTM(JANET)單元 158
7.6.4 獨立循環(huán)(IndRNN)單元 158
7.6.5 雙向RNN結(jié)構(gòu) 159
7.7 實例11:用循環(huán)神經(jīng)網(wǎng)絡訓練語言模型 160
7.7.1 什么是語言模型 161
7.7.2 詞表與詞向量 161
7.7.3 詞向量的原理與實現(xiàn) 161
7.7.4 NLP中多項式分布 162
7.7.5 循環(huán)神經(jīng)網(wǎng)絡的實現(xiàn) 163
7.7.6 實現(xiàn)語言模型的思路與步驟 164
7.7.7 代碼實現(xiàn):準備樣本 165
7.7.8 代碼實現(xiàn):構(gòu)建循環(huán)神經(jīng)網(wǎng)絡(RNN)模型 167
7.7.9 代碼實現(xiàn):實例化模型類,并訓練模型 168
7.7.10 代碼實現(xiàn):運行模型生成句子 171
7.8 過擬合問題及優(yōu)化技巧 172
7.8.1 實例12:訓練具有過擬合問題的模型 172
7.8.2 改善模型過擬合的方法 175
7.8.3 了解正則化 175
7.8.4 實例13:用L2正則改善模型的過擬合狀況 176
7.8.5 實例14:通過增大數(shù)據(jù)集改善模型的過擬合狀況 178
7.8.6 Dropout方法 179
7.8.7 實例15: 通過Dropout方法改善模型的過擬合狀況 180
7.8.8 全連接網(wǎng)絡的深淺與泛化能力的聯(lián)系 182
7.8.9 了解批量歸一化(BN)算法 182
7.8.10 實例16: 手動實現(xiàn)批量歸一化的計算方法 185
7.8.11 實例17: 通過批量歸一化方法改善模型的過擬合狀況 187
7.8.12 使用批量歸一化方法時的注意 事項 188
7.8.13 擴展:多種批量歸一化算法介紹 188
7.9 神經(jīng)網(wǎng)絡中的注意力機制 189
7.9.1 注意力機制的實現(xiàn) 189
7.9.2 注意力機制的軟、硬模式 190
7.9.3 注意力機制模型的原理 190
7.9.4 多頭注意力機制 191
7.9.5 自注意力機制 192
7.10 實例18:利用注意力循環(huán)神經(jīng)網(wǎng)絡對圖片分類 192
7.10.1 循環(huán)神經(jīng)網(wǎng)絡處理圖片分類任務的原理 192
7.10.2 代碼實現(xiàn):搭建LSTM網(wǎng)絡模型 193
7.10.3 代碼實現(xiàn):構(gòu)建注意力機制類 193
7.10.4 代碼實現(xiàn):構(gòu)建輸入數(shù)據(jù)并訓練模型 196
7.10.5 使用并評估模型 197
7.10.6 擴展1:使用梯度剪輯技巧優(yōu)化訓練過程 197
7.10.7 擴展2:使用JANET單元完成RNN 198
7.10.8 擴展3:使用IndRNN單元實現(xiàn)RNN 198
第8章 無監(jiān)督學習中的神經(jīng)網(wǎng)絡 199
8.1 快速了解信息熵 200
8.1.1 信息熵與概率的計算關系 200
8.1.2 聯(lián)合熵 202
8.1.3 條件熵 202
8.1.4 交叉熵 203
8.1.5 相對熵——KL散度 203
8.1.6 JS散度 204
8.1.7 互信息 204
8.2 通用的無監(jiān)督模型——自編碼神經(jīng)網(wǎng)絡與對抗神經(jīng)網(wǎng)絡 205
8.3 自編碼神經(jīng)網(wǎng)絡 206
8.3.1 自編碼神經(jīng)網(wǎng)絡的結(jié)構(gòu) 206
8.3.2 自編碼神經(jīng)網(wǎng)絡的計算過程 206
8.3.3 自編碼神經(jīng)網(wǎng)絡的作用與意義 207
8.3.4 變分自編碼神經(jīng)網(wǎng)絡 207
8.3.5 條件變分自編碼神經(jīng)網(wǎng)絡 208
8.4 實例19:用變分自編碼神經(jīng)網(wǎng)絡模型生成模擬數(shù)據(jù) 208
8.4.1 變分自編碼神經(jīng)網(wǎng)絡模型的結(jié)構(gòu)介紹 208
8.4.2 代碼實現(xiàn):引入模塊并載入樣本 209
8.4.3 代碼實現(xiàn):定義變分自編碼神經(jīng)網(wǎng)絡模型的正向結(jié)構(gòu) 210
8.4.4 變分自編碼神經(jīng)網(wǎng)絡模型的反向傳播與KL散度的應用 211
8.4.5 代碼實現(xiàn):完成損失函數(shù)和訓練函數(shù) 212
8.4.6 代碼實現(xiàn):訓練模型并輸出可視化結(jié)果 213
8.4.7 代碼實現(xiàn):提取樣本的低維特征并進行可視化 214
8.4.8 代碼實現(xiàn):可視化模型的輸出空間 215
8.5 實例20:用條件變分自編碼神經(jīng)網(wǎng)絡生成可控模擬數(shù)據(jù) 216
8.5.1 條件變分自編碼神經(jīng)網(wǎng)絡的實現(xiàn) 216
8.5.2 代碼實現(xiàn):定義條件變分自編碼神經(jīng)網(wǎng)絡模型的正向結(jié)構(gòu) 217
8.5.3 代碼實現(xiàn):訓練模型并輸出可視化結(jié)果 218
8.6 對抗神經(jīng)網(wǎng)絡 219
8.6.1 對抗神經(jīng)網(wǎng)絡的工作過程 219
8.6.2 對抗神經(jīng)網(wǎng)絡的作用 220
8.6.3 GAN模型難以訓練的原因 220
8.6.4 WGAN模型——解決GAN難以訓練的問題 221
8.6.5 分析WGAN的不足 222
8.6.6 WGAN-gp模型——更容易訓練的GAN模型 223
8.6.7 條件GAN 2248.6.8 帶有W散度的GAN——WGAN-div 225
8.7 實例21:用WGAN-gp模型生成模擬數(shù)據(jù) 226
8.7.1 DCGAN中的全卷積 226
8.7.2 上采樣與下采樣 227
8.7.3 實例歸一化 228
8.7.4 代碼實現(xiàn):引入模塊并載入樣本 228
8.7.5 代碼實現(xiàn):定義生成器與判別器 229
8.7.6 激活函數(shù)與歸一化層的位置關系 231
8.7.7 代碼實現(xiàn):定義函數(shù)完成梯度懲罰項 234
8.7.8 代碼實現(xiàn):定義模型的訓練函數(shù) 235
8.7.9 代碼實現(xiàn):定義函數(shù),可視化模型結(jié)果 237
8.7.10 代碼實現(xiàn):調(diào)用函數(shù)并訓練模型 237
8.7.11 練習題 238
8.8 實例22:用條件GAN生成可控模擬數(shù)據(jù) 239
8.8.1 代碼實現(xiàn):定義條件GAN模型的正向結(jié)構(gòu) 239
8.8.2 代碼實現(xiàn):調(diào)用函數(shù)并訓練模型 240
8.9 實例23:實現(xiàn)帶有W散度的GAN——WGAN-div模型 241
8.9.1 代碼實現(xiàn):完成W散度的損失函數(shù) 241
8.9.2 代碼實現(xiàn):定義訓練函數(shù)來訓練模型 242
8.10 散度在神經(jīng)網(wǎng)絡中的應用 243
8.10.1 f-GAN框架 243
8.10.2 基于f散度的變分散度最小化方法 243
8.10.3 用Fenchel共軛函數(shù)實現(xiàn)f-GAN 244
8.10.4 f-GAN中判別器的激活函數(shù) 246
8.10.5 互信息神經(jīng)估計 247
8.10.6 實例24:用神經(jīng)網(wǎng)絡估計互信息 249
8.10.7 穩(wěn)定訓練GAN模型的經(jīng)驗和技巧 252
8.11 實例25:用最大化深度互信息模型執(zhí)行圖片搜索器 253
8.11.1 DIM模型的原理 254
8.11.2 DIM模型的結(jié)構(gòu) 254
8.11.3 代碼實現(xiàn):加載CIFAR數(shù)據(jù)集 257
8.11.4 代碼實現(xiàn):定義DIM模型 260
8.11.5 代碼實現(xiàn):實例化DIM模型并進行訓練 262
8.11.6 代碼實現(xiàn):加載模型搜索圖片 264
第9章 快速了解圖神經(jīng)網(wǎng)絡——少量樣本也可以訓練模型 269
9.1 圖神經(jīng)網(wǎng)絡的相關基礎知識 270
9.1.1 歐氏空間與非歐氏空間 270
9.1.2 圖 270
9.1.3 圖相關的術語和度量 270
9.1.4 圖神經(jīng)網(wǎng)絡 271
9.1.5 GNN的動機 271
9.2 矩陣的基礎 272
9.2.1 轉(zhuǎn)置矩陣 272
9.2.2 對稱矩陣及其特性 272
9.2.3 對角矩陣與單位矩陣 272
9.2.4 哈達馬積 273
9.2.5 點積 273
9.2.6 對角矩陣的特性與操作方法 273
9.2.7 度矩陣與鄰接矩陣 275
9.3 鄰接矩陣的幾種操作 275
9.3.1 獲取有向圖的短邊和長邊 276
9.3.2 將有向圖的鄰接矩陣轉(zhuǎn)成無向圖的鄰接矩陣 277
9.4 實例26:用圖卷積神經(jīng)網(wǎng)絡為論文分類 278
9.4.1 CORA數(shù)據(jù)集 278
9.4.2 代碼實現(xiàn):引入基礎模塊并設置運行環(huán)境 279
9.4.3 代碼實現(xiàn):讀取并解析論文數(shù)據(jù) 279
9.4.4 代碼實現(xiàn):讀取并解析論文關系數(shù)據(jù) 281
9.4.5 代碼實現(xiàn):加工圖結(jié)構(gòu)的矩陣數(shù)據(jù) 283
9.4.6 代碼實現(xiàn):將數(shù)據(jù)轉(zhuǎn)為張量,并分配運算資源 284
9.4.7 代碼實現(xiàn):定義Mish激活函數(shù)與圖卷積操作類 284
9.4.8 代碼實現(xiàn):搭建多層圖卷積網(wǎng)絡 286
9.4.9 代碼實現(xiàn):用Ranger優(yōu)化器訓練模型并可視化結(jié)果 287
9.5 圖卷積神經(jīng)網(wǎng)絡 290
9.5.1 圖結(jié)構(gòu)與拉普拉斯矩陣的關系 290
9.5.2 拉普拉斯矩陣的3種形式 291
9.6 擴展實例:用Multi-sample Dropout優(yōu)化模型的訓練速度 291
9.6.1 Multi-sample Dropout方法 292
9.6.2 代碼實現(xiàn):為圖卷積模型添加 Multi-sample Dropout方法 292
9.6.3 代碼實現(xiàn):使用帶有Multi-sample Dropout方法的圖卷積模型 293
9.7 從圖神經(jīng)網(wǎng)絡的視角看待深度學習 294
9.8 圖神經(jīng)網(wǎng)絡使用拉普拉斯矩陣的原因 295
9.8.1 節(jié)點與鄰接矩陣的點積作用 295
9.8.2 拉普拉斯矩陣的點積作用 296
9.8.3 重新審視圖卷積的擬合本質(zhì) 296
9.8.4 點積計算并不是唯一方法 296
第 10章 基于空間域的圖神經(jīng)網(wǎng)絡實現(xiàn) 297
10.1 重新認識圖卷積神經(jīng)網(wǎng)絡 298
10.1.1 基于譜域的圖處理 298
10.1.2 基于頂點域的圖處理 298
10.1.3 基于頂點域的圖卷積 298
10.1.4 圖卷積的特性 299
10.2 實例27:用圖注意力神經(jīng)網(wǎng)絡為論文分類 300
10.2.1 圖注意力網(wǎng)絡 300
10.2.2 工程部署 301
10.2.3 代碼實現(xiàn):對鄰接矩陣進行對稱歸一化拉普拉斯矩陣轉(zhuǎn)化 301
10.2.4 代碼實現(xiàn):搭建圖注意力神經(jīng)網(wǎng)絡層 301
10.2.5 代碼實現(xiàn):搭建圖注意力模型類 302
10.2.6 代碼實現(xiàn):實例化圖注意力模型,并進行訓練與評估 303
10.2.7 常用的圖神經(jīng)網(wǎng)絡庫 304
10.3 圖神經(jīng)網(wǎng)絡常用庫——DGL庫 305
10.3.1 DGL庫的實現(xiàn)與性能 305
10.3.2 安裝DGL庫的方法及注意事項 305
10.3.3 DGL庫中的數(shù)據(jù)集 306
10.3.4 DGL庫中的圖 307
10.3.5 DGL庫中的內(nèi)聯(lián)函數(shù) 307
10.3.6 擴展:了解PyG庫 307
10.4 DGLGraph圖的基本操作 308
10.4.1 DGLGraph圖的創(chuàng)建與維護 308
10.4.2 查看DGLGraph圖中的度 309
10.4.3 DGLGraph圖與NetWorkx圖的相互轉(zhuǎn)化 310
10.4.4 NetWorkx庫 311
10.4.5 DGLGraph圖中頂點屬性的操作 313
10.4.6 DGLGraph圖中邊屬性的操作 314
10.4.7 DGLGraph圖屬性操作中的注意事項 314
10.4.8 使用函數(shù)對圖的頂點和邊進行計算 315
10.4.9 使用函數(shù)對圖的頂點和邊進行過濾 315
10.4.10 DGLGraph圖的消息傳播 316
10.4.11 DGL庫中的多圖處理 317
10.5 實例28:用帶有殘差結(jié)構(gòu)的多層GAT模型實現(xiàn)論文分類 318
10.5.1 代碼實現(xiàn):使用DGL數(shù)據(jù)集加載CORA樣本 319
10.5.2 用鄰居聚合策略實現(xiàn)GATConv 321
10.5.3 代碼實現(xiàn):用DGL庫中的GATConv搭建多層GAT模型 323
10.5.4 代碼實現(xiàn):使用早停方式訓練模型并輸出評估結(jié)果 324
10.6 圖卷積模型的缺陷 327
10.6.1 全連接網(wǎng)絡的特征與缺陷 327
10.6.2 圖卷積模型的缺陷 328
10.6.3 彌補圖卷積模型缺陷的方法 328
10.6.4 從圖結(jié)構(gòu)角度理解圖卷積原理及缺陷 328
10.7 實例29:用簡化圖卷積模型實現(xiàn)論文分類 329
10.7.1 SGC的網(wǎng)絡結(jié)構(gòu) 330
10.7.2 DGL庫中SGC模型的實現(xiàn)方式 331
10.7.3 代碼實現(xiàn):搭建SGC模型并進行訓練 333
10.7.4 擴展: SGC模型的不足 334
10.8 實例30:用圖濾波神經(jīng)網(wǎng)絡模型實現(xiàn)論文分類 334
10.8.1 GfNN的結(jié)構(gòu) 334
10.8.2 代碼實現(xiàn):搭建GfNN模型并進行訓練 335
10.9 實例31:用深度圖互信息模型實現(xiàn)論文分類 337
10.9.1 DGI模型的原理與READOUT函數(shù) 337
10.9.2 代碼實現(xiàn):搭建多層SGC網(wǎng)絡 338
10.9.3 代碼實現(xiàn):搭建編碼器和判別器 339
10.9.4 代碼實現(xiàn):搭建DGI模型并進行訓練 340
10.9.5 代碼實現(xiàn):利用DGI模型提取特征并進行分類 342
10.10 實例32:用圖同構(gòu)網(wǎng)絡模型實現(xiàn)論文分類 344
10.10.1 多重集與單射 344
10.10.2 GIN模型的原理與實現(xiàn) 344
10.10.3 代碼實現(xiàn):搭建多層GIN模型并進行訓練 346
10.11 實例33:用APPNP模型實現(xiàn)論文分類 347
10.11.1 APPNP模型的原理與實現(xiàn) 347
10.11.2 代碼實現(xiàn):搭建APPNP模型并進行訓練 349
10.12 實例34:用JKNet模型實現(xiàn)論文分類 351
10.12.1 JKNet模型結(jié)構(gòu) 351
10.12.2 代碼實現(xiàn):修改圖數(shù)據(jù)的預處理部分 352
10.12.3 代碼實現(xiàn):搭建JKNet模型并進行訓練 352
10.13 總結(jié) 355
你還可能感興趣
我要評論
|