圖深度學(xué)習(xí)是當(dāng)前深度學(xué)習(xí)領(lǐng)域最熱門的方向之一,圖神經(jīng)網(wǎng)絡(luò)(GNN)不僅在理論上有所創(chuàng)新,在工業(yè)界中也真實的應(yīng)用。本文介紹 Github 上熱門的圖神經(jīng)網(wǎng)絡(luò)源碼及框架,方便研究人員和工程師上手圖深度學(xué)習(xí)。
近兩年來,圖卷積、圖注意力網(wǎng)絡(luò)等圖神經(jīng)網(wǎng)絡(luò)在學(xué)術(shù)界、工業(yè)界都有廣泛的應(yīng)用。雖然大多數(shù)圖神經(jīng)網(wǎng)絡(luò)理論包含復(fù)雜的公式推導(dǎo),但最終產(chǎn)出的網(wǎng)絡(luò)結(jié)構(gòu)(公式)缺一般比較簡單,但這并不意味著圖神經(jīng)網(wǎng)絡(luò)的實現(xiàn)會很簡單。
導(dǎo)致圖神經(jīng)網(wǎng)絡(luò)實現(xiàn)復(fù)雜的原因主要有以下幾個:
以圖卷積網(wǎng)絡(luò)為例,它的原版依賴完整鄰接矩陣和全部節(jié)點作為輸入,對內(nèi)存、顯存和計算效率都造成了限制。好在目前有一些理論如 FaskGCN 可以通過 mini-batch 等方式來進(jìn)行數(shù)據(jù)切分從而解決這個問題。
雖然利用稀疏矩陣可以一定程度上緩解上述問題,但依然不能處理大規(guī)模的數(shù)據(jù)。另外,由于多層網(wǎng)絡(luò)結(jié)構(gòu)的復(fù)雜,一般在實現(xiàn)時要同時實現(xiàn)稀疏版和非稀疏版的組件。
對圖結(jié)構(gòu)數(shù)據(jù)的預(yù)處理比較麻煩。例如在處理異構(gòu)網(wǎng)絡(luò)時,有時需要對每種類型的節(jié)點進(jìn)行獨(dú)立地編號、為每種關(guān)系獨(dú)立建立子圖等,才能將圖數(shù)據(jù)轉(zhuǎn)換為深度學(xué)習(xí)模型可用的數(shù)值化數(shù)據(jù),并且任何一個細(xì)節(jié)可能都會影響算法的效率(如鄰節(jié)點列表的數(shù)據(jù)結(jié)構(gòu)使用 list 和 set 會導(dǎo)致不同的采樣效率和查詢效率)。
需要一些基于圖的額外操作,例如 Random Walk、有類型約束的 Random Walk(Meta-path)等,由于圖結(jié)構(gòu)的復(fù)雜性,這些操作在單機(jī)上的實現(xiàn)都比較費(fèi)力,更不用說在大規(guī)模分布式上。
圖深度學(xué)習(xí)研究者和工業(yè)界在 Github 上開源了一些優(yōu)秀的圖神經(jīng)網(wǎng)絡(luò)的實現(xiàn)其框架,都從一定程度上去解決了上述的問題,非常值得我們借鑒。下面我們列出一些優(yōu)秀的 Github 倉庫:
DeepWalk / LINE
鏈接:
DeepWalk: https://github.com/phanein/deepwalk
LINE: https://github.com/tangjianpku/LINE
簡介:
雖然 DeepWalk 和 LINE 屬于網(wǎng)絡(luò)表示學(xué)習(xí)中的算法,與現(xiàn)在端到端的圖神經(jīng)網(wǎng)絡(luò)有一定的區(qū)別,但目前一些圖神經(jīng)網(wǎng)絡(luò)應(yīng)用(如社交網(wǎng)絡(luò)、引用網(wǎng)絡(luò)節(jié)點分類)依然使用 DeepWalk/LINE 來作為預(yù)訓(xùn)練算法,無監(jiān)督地為節(jié)點獲得初始特征表示。另外,DeepWalk 項目中的 Random Walk 也可以被直接拿來用作圖神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)采樣操作。
圖卷積網(wǎng)絡(luò) GCN TensorFlow/PyTorch 版
鏈接:
TensorFlow:https://github.com/tkipf/gcn
PyTorch:https://github.com/tkipf/pygcn
簡介:
GCN 論文作者提供的源碼,該源碼提供了大量關(guān)于稀疏矩陣的代碼。例如如何構(gòu)建稀疏的變換矩陣(這部分代碼被其他許多項目復(fù)用)、如何將稀疏 CSR 矩陣變換為 TensorFlow/PyTorch 的稀疏 Tensor,以及如何構(gòu)建兼容稀疏和非稀疏的全連接層等,幾乎是圖神經(jīng)網(wǎng)絡(luò)必讀的源碼之一了。
快速圖卷積網(wǎng)絡(luò) FastGCN TensorFlow 版
鏈接:
https://github.com/matenure/FastGCN
簡介:
FastGCN 作者提供的源碼,基于采樣的方式構(gòu)建 mini-match 來訓(xùn)練 GCN,解決了 GCN 不能處理大規(guī)模數(shù)據(jù)的問題。
圖注意力網(wǎng)絡(luò) GAT TensorFlow 版
鏈接:
https://github.com/PetarV-/GAT
簡介:
GAT 論文作者提供的源碼。源碼中關(guān)于 mask 的實現(xiàn)、以及稀疏版 GAT 的實現(xiàn)值得借鑒。
Mini-batch 版圖注意力網(wǎng)絡(luò) DeepInf
鏈接:
https://github.com/xptree/DeepInf
簡介:
DeepInf 論文其實是 GAT 的一個應(yīng)用,但其基于 Random Walk 采樣子圖構(gòu)建 mini-batch 的方法解決了 GAT 在大規(guī)模網(wǎng)絡(luò)上應(yīng)用的問題。
DeepMind 開源的圖神經(jīng)網(wǎng)絡(luò)框架Graph Nets
鏈接:
https://github.com/deepmind/graph_nets
簡介:
基于 TensorFlow 和 Sonnet。上面的項目更側(cè)重于節(jié)點特征的計算,而 graph_nets 同時包含節(jié)點和邊的計算,可用于一些高級任務(wù),如最短路徑、物理場景模擬等。
工業(yè)級分布式圖神經(jīng)網(wǎng)絡(luò)框架 Euler
鏈接:
https://github.com/alibaba/euler
簡介:
Euler 是阿里巴巴開源的大規(guī)模分布式的圖學(xué)習(xí)框架,配合 TensorFlow 或者阿里開源的 XDL 等深度學(xué)習(xí)工具,它支持用戶在數(shù)十億點數(shù)百億邊的復(fù)雜異構(gòu)圖上進(jìn)行模型訓(xùn)練。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4781瀏覽量
101189 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5516瀏覽量
121572 -
GitHub
+關(guān)注
關(guān)注
3文章
473瀏覽量
16584
原文標(biāo)題:Github熱門圖深度學(xué)習(xí)(GraphDL)源碼與框架
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
SSM框架的源碼解析與理解
嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核簡介
飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核簡介
libmodbus源碼框架分析
![libmodbus<b class='flag-5'>源碼</b><b class='flag-5'>框架</b>分析](https://file1.elecfans.com/web1/M00/F5/88/wKgZoWc-yauAJSZbAAATXgIaxKk824.png)
一些常見的動態(tài)電路
![<b class='flag-5'>一些</b>常見的動態(tài)電路](https://file1.elecfans.com/web1/M00/F4/F1/wKgaoWc0ATSAA4smAAARqkK1SoQ655.gif)
分享一些常見的電路
![分享<b class='flag-5'>一些</b>常見的電路](https://file1.elecfans.com/web1/M00/F4/F1/wKgaoWc0ATSAA4smAAARqkK1SoQ655.gif)
LED驅(qū)動器應(yīng)用的一些指南和技巧
![LED驅(qū)動器應(yīng)用的<b class='flag-5'>一些</b>指南和技巧](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
上傳本地項目代碼到github
求CSU8RP1186一些關(guān)于電子秤開發(fā)例程,最好是C的,跪謝
nlp自然語言處理框架有哪些
打開esp-idf的任意一個component時,vscode會自動導(dǎo)入該component的git倉庫,怎么解決?
RFID背夾在倉庫管理中的應(yīng)用
![RFID背夾在<b class='flag-5'>倉庫</b>管理中的應(yīng)用](https://file1.elecfans.com/web2/M00/E5/E7/wKgZomZFdLOAAJ2UAADHYx5q0WU227.png)
GitHub推出新功能:智能掃描代碼潛在漏洞
GitHub Copilot+ESP開發(fā)使用問題集錦(一)
![<b class='flag-5'>GitHub</b> Copilot+ESP開發(fā)使用問題集錦(<b class='flag-5'>一</b>)](https://file.elecfans.com/web2/M00/45/DA/poYBAGKPGziABtawAAAYlXODTds073.jpg)
評論