0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一個(gè)基于PyTorch的幾何深度學(xué)習(xí)擴(kuò)展庫(kù),為GNN的研究和應(yīng)用再添利器

DPVg_AI_era ? 來源:lp ? 2019-03-11 08:49 ? 次閱讀

德國(guó)研究者提出最新幾何深度學(xué)習(xí)擴(kuò)展庫(kù) PyTorch Geometric (PyG),具有快速、易用的優(yōu)勢(shì),使得實(shí)現(xiàn)圖神經(jīng)網(wǎng)絡(luò)變得非常容易。作者開源了他們的方法,并提供教程和實(shí)例。

過去十年來,深度學(xué)習(xí)方法(例如卷積神經(jīng)網(wǎng)絡(luò)和遞歸神經(jīng)網(wǎng)絡(luò))在許多領(lǐng)域取得了前所未有的成就,例如計(jì)算機(jī)視覺語音識(shí)別。

研究者主要將深度學(xué)習(xí)方法應(yīng)用于歐氏結(jié)構(gòu)數(shù)據(jù)(Euclidean domains),但在許多重要的應(yīng)用領(lǐng)域,如生物學(xué)、物理學(xué)、網(wǎng)絡(luò)科學(xué)、推薦系統(tǒng)和計(jì)算機(jī)圖形學(xué),可能不得不處理非歐式結(jié)構(gòu)的數(shù)據(jù),比如圖和流形。

直到最近,深度學(xué)習(xí)在這些特定領(lǐng)域的采用一直很滯后,主要是因?yàn)閿?shù)據(jù)的非歐氏結(jié)構(gòu)性質(zhì)使得基本操作(例如卷積)的定義相當(dāng)困難。在這個(gè)意義上,幾何深度學(xué)習(xí)將深度學(xué)習(xí)技術(shù)擴(kuò)展到了圖/流形結(jié)構(gòu)數(shù)據(jù)。

圖神經(jīng)網(wǎng)絡(luò)(GNN)是近年發(fā)展起來的一個(gè)很有前景的深度學(xué)習(xí)方向,也是一種強(qiáng)大的圖、點(diǎn)云和流形表示學(xué)習(xí)方法。

然而,實(shí)現(xiàn)GNN具有挑戰(zhàn)性,因?yàn)樾枰诟叨认∈枨也灰?guī)則、不同大小的數(shù)據(jù)上實(shí)現(xiàn)高GPU吞吐量。

近日,德國(guó)多特蒙德工業(yè)大學(xué)的研究者兩位Matthias Fey和Jan E. Lenssen,提出了一個(gè)基于PyTorch的幾何深度學(xué)習(xí)擴(kuò)展庫(kù)PyTorch Geometric (PyG),為GNN的研究和應(yīng)用再添利器。

論文:

https://arxiv.org/pdf/1903.02428.pdf

Yann Lecun也熱情推薦了這個(gè)工作,稱贊它是一個(gè)快速、美觀的PyTorch庫(kù),用于幾何深度學(xué)習(xí)(圖和其他不規(guī)則結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò))。

作者聲稱,PyG甚至比幾個(gè)月前NYU、AWS聯(lián)合開發(fā)的圖神經(jīng)網(wǎng)絡(luò)庫(kù) DGL(Deep Graph Library)快了15倍!

作者在論文中寫道:“這是一個(gè)PyTorch的幾何深度學(xué)習(xí)擴(kuò)展庫(kù),它利用專用的CUDA 內(nèi)核實(shí)現(xiàn)了高性能。它遵循一個(gè)簡(jiǎn)單的消息傳遞API,將最近提出的大多數(shù)卷積和池化層捆綁到一個(gè)統(tǒng)一的框架中。所有實(shí)現(xiàn)的方法都支持CPU和GPU計(jì)算,并遵循一個(gè)不可變的數(shù)據(jù)流范式,該范式支持圖結(jié)構(gòu)隨時(shí)間的動(dòng)態(tài)變化?!?/p>

PyG已經(jīng)在MIT許可下發(fā)布,可以在GitHub上獲取。里面有完整的文檔說明,并提供了作為起點(diǎn)的教程和示例。

地址:

https://github.com/rusty1s/pytorch_geometric

PyTorch Geometry:基于PyTorch的幾何深度學(xué)習(xí)擴(kuò)展庫(kù)

PyTorch Geometry是一個(gè)基于PyTorch的幾何深度學(xué)習(xí)擴(kuò)展庫(kù),用于不規(guī)則結(jié)構(gòu)輸入數(shù)據(jù),例如圖(graphs)、點(diǎn)云(point clouds)和流形(manifolds)。

PyTorch Geometry包含了各種針對(duì)圖形和其他不規(guī)則結(jié)構(gòu)的深度學(xué)習(xí)方法,也稱為幾何深度學(xué)習(xí),來自于許多已發(fā)表的論文。

此外,它還包含一個(gè)易于使用的mini-batch加載器、多GPU支持、大量通用基準(zhǔn)數(shù)據(jù)集和有用的轉(zhuǎn)換,既可以學(xué)習(xí)任意圖形,也可以學(xué)習(xí)3D網(wǎng)格或點(diǎn)云。

在PyG中,我們用一個(gè)節(jié)點(diǎn)特征矩陣和一個(gè)稀疏鄰接元組代表一個(gè)圖

其中以坐標(biāo)格式編碼索引,保持?D?維邊緣特征。

所有面向用戶的API,據(jù)加載例程、多GPU支持、數(shù)據(jù)增強(qiáng)或模型實(shí)例化都很大程度上受到PyTorch的啟發(fā),以便使它們盡可能保持熟悉。

Neighborhood Aggregation:將卷積算子推廣到不規(guī)則域通常表示為一個(gè)鄰域聚合(neighborhood aggregation),或message passing scheme (Gilmer et al., 2017)。

其中,表示一個(gè)可微分的置換不變函數(shù),例如?sum, mean or max,而表示可微分函數(shù),例如?MLP。

在實(shí)踐中,這可以通過收集和散布節(jié)點(diǎn)特性并利用broadcasting進(jìn)行

圖1

幾乎所有最近提出的鄰域聚合函數(shù)可以利用這個(gè)接口,已經(jīng)集成到PyG的方法包括(但不限于):

對(duì)于任意圖形學(xué)習(xí),我們已經(jīng)實(shí)現(xiàn)了:

GCN(Kipf & Welling, 2017)和它的簡(jiǎn)化版本SGC(Wu et al., 2019)

spectral chebyshev和ARMAfilter convolutionss (Defferrard et al., 2016; Bianchi et al., 2019)

GraphSAGE(Hamilton et al., 2017)

attention-based operatorsGAT(Veli?kovi? et al., 2018)及AGNN (Thekumparampil et al., 2018),

Graph Isomorphism Network (GIN) from Xu et al. (2019)

Approximate Personalized Propagation of Neural Predictions (APPNP) operator (Klicpera et al., 2019)

對(duì)于學(xué)習(xí)具有多維邊緣特征的點(diǎn)云,流形和圖,我們提供了:

Schlichtkrull et al. (2018)的relationalGCNoperator

PointNet++(Qi et al., 2017)

PointCNN(Li et al., 2018)

kernel-based methodsMPNN(Gilmer et al., 2017),

MoNet(Monti et al., 2017)

SplineCNN(Fey et al., 2018)

以及邊緣卷積算子EdgeCNN(Wang et al., 2018b).

實(shí)驗(yàn)評(píng)估

我們通過對(duì)同類評(píng)估場(chǎng)景進(jìn)行綜合比較研究,評(píng)估了利用PyG所實(shí)現(xiàn)方法的正確性。所有使用過的數(shù)據(jù)集的描述和統(tǒng)計(jì)可以在論文附錄中找到。

對(duì)于所有的實(shí)驗(yàn),我們都盡可能地遵循各自原始論文的超參數(shù)設(shè)置,GitHub存儲(chǔ)庫(kù)中提供了復(fù)制所有實(shí)驗(yàn)的代碼。

表2:圖分類的結(jié)果

表3:點(diǎn)云分類的結(jié)果

我們對(duì)多個(gè)數(shù)據(jù)模型對(duì)進(jìn)行了多次實(shí)驗(yàn),并報(bào)告了在單個(gè)NVIDIA GTX 1080 Ti上獲得的整個(gè)訓(xùn)練過程的運(yùn)行情況(表4)。與Deep Graph Library (DGL)(Wang et al., 2018a)相比,PyG訓(xùn)練模型的速度快了15倍。

表4:訓(xùn)練runtime比較

安裝、教程&示例

PyTorch Geometric使實(shí)現(xiàn)圖卷積網(wǎng)絡(luò)變得非常容易(請(qǐng)參閱GitHub上的教程)。

例如,這就是實(shí)現(xiàn)一個(gè)邊緣卷積層(edge convolution layer)所需的全部代碼:

import torchfrom torch.nn import Sequential as Seq, Linear as Lin, ReLUfrom torch_geometric.nn import MessagePassingclass EdgeConv(MessagePassing): def __init__(self, F_in, F_out): super(EdgeConv, self).__init__() self.mlp = Seq(Lin(2 * F_in, F_out), ReLU(), Lin(F_out, F_out)) def forward(self, x, edge_index): # x has shape [N, F_in] # edge_index has shape [2, E] return self.propagate(aggr='max', edge_index=edge_index, x=x) # shape [N, F_out] def message(self, x_i, x_j): # x_i has shape [E, F_in] # x_j has shape [E, F_in] edge_features = torch.cat([x_i, x_j - x_i], dim=1) # shape [E, 2 * F_in] return self.mlp(edge_features) # shape [E, F_out]

此外,與其他深度圖神經(jīng)網(wǎng)絡(luò)庫(kù)相比,PyTorch Geometric的速度更快:

表:在一塊NVIDIA GTX 1080Ti上的訓(xùn)練runtime

安裝

確保至少安裝了PyTorch 1.0.0,并驗(yàn)證cuda/bin和cuda/include分別位于$PATH和 $cpathrespecific,例如:

$ python -c "import torch; print(torch.__version__)">>> 1.0.0$ echo $PATH>>> /usr/local/cuda/bin:...$ echo $CPATH>>> /usr/local/cuda/include:...

然后運(yùn)行:

$ pip install --upgrade torch-scatter$ pip install --upgrade torch-sparse$ pip install --upgrade torch-cluster$ pip install --upgrade torch-spline-conv (optional)$ pip install torch-geometric

運(yùn)行示例

cd examplespython cora.py

paper:

https://arxiv.org/pdf/1903.02428.pdf

GitHub:

https://github.com/rusty1s/pytorch_geometric

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4749

    瀏覽量

    100433
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5471

    瀏覽量

    120903
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    802

    瀏覽量

    13120
  • GNN
    GNN
    +關(guān)注

    關(guān)注

    1

    文章

    31

    瀏覽量

    6325

原文標(biāo)題:LeCun推薦:最新PyTorch圖神經(jīng)網(wǎng)絡(luò)庫(kù),速度快15倍(GitHub+論文)

文章出處:【微信號(hào):AI_era,微信公眾號(hào):新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    機(jī)器學(xué)習(xí)實(shí)戰(zhàn):GNN加速器的FPGA解決方案

    展現(xiàn)給讀者。2. GNN 簡(jiǎn)介GNN的架構(gòu)在宏觀層面有著很多與傳統(tǒng)CNN類似的地方,比如卷積層、Poing、激活函數(shù)、機(jī)器學(xué)習(xí)處理器(MP)和FC層等等模塊,都會(huì)在GNN中得以應(yīng)用。下
    發(fā)表于 10-20 09:48

    Pytorch入門教程與范例

    pytorch個(gè)基于 python 的深度學(xué)習(xí)庫(kù)。py
    發(fā)表于 11-15 17:50 ?5360次閱讀
    <b class='flag-5'>Pytorch</b>入門教程與范例

    Facebook研究開放新框架,讓深度學(xué)習(xí)更加容易

    FAIR直是深度學(xué)習(xí)領(lǐng)域研究和開源框架的定期貢獻(xiàn)者。從PyTorch到ONNX, FAIR團(tuán)隊(duì)
    的頭像 發(fā)表于 03-13 15:23 ?1669次閱讀

    基于PyTorch深度學(xué)習(xí)入門教程之PyTorch的安裝和配置

    神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),并且運(yùn)用各種深度學(xué)習(xí)算法訓(xùn)練網(wǎng)絡(luò)參數(shù),進(jìn)而解決各種任務(wù)。 本文從PyTorch環(huán)境配置開始。PyTorch種Python接
    的頭像 發(fā)表于 02-16 15:15 ?2541次閱讀

    基于PyTorch深度學(xué)習(xí)入門教程之PyTorch簡(jiǎn)單知識(shí)

    計(jì)算 Part3:使用PyTorch構(gòu)建個(gè)神經(jīng)網(wǎng)絡(luò) Part4:訓(xùn)練個(gè)神經(jīng)網(wǎng)絡(luò)分類器 Part5:數(shù)據(jù)并行化 本文是關(guān)于Part1的內(nèi)容
    的頭像 發(fā)表于 02-16 15:20 ?2210次閱讀

    PyTorch 的 Autograd 機(jī)制和使用

    PyTorch 作為個(gè)深度學(xué)習(xí)平臺(tái),在深度學(xué)習(xí)任務(wù)
    的頭像 發(fā)表于 08-15 09:37 ?1061次閱讀

    ?計(jì)算機(jī)視覺深度學(xué)習(xí)訓(xùn)練推理框架

    PyTorch是由Facebook人工智能研究小組開發(fā)的種基于Lua編寫的Torch庫(kù)的Python實(shí)現(xiàn)的深度
    的頭像 發(fā)表于 05-08 14:20 ?1115次閱讀
    ?計(jì)算機(jī)視覺<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>訓(xùn)練推理框架

    PyTorch教程12.1之優(yōu)化和深度學(xué)習(xí)

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程12.1之優(yōu)化和深度學(xué)習(xí).pdf》資料免費(fèi)下載
    發(fā)表于 06-05 15:08 ?0次下載
    <b class='flag-5'>PyTorch</b>教程12.1之優(yōu)化和<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>

    深度學(xué)習(xí)框架pytorch入門與實(shí)踐

    深度學(xué)習(xí)框架pytorch入門與實(shí)踐 深度學(xué)習(xí)是機(jī)器學(xué)習(xí)中的
    的頭像 發(fā)表于 08-17 16:03 ?1547次閱讀

    深度學(xué)習(xí)框架pytorch介紹

    深度學(xué)習(xí)框架pytorch介紹 PyTorch是由Facebook創(chuàng)建的開源機(jī)器學(xué)習(xí)框架,其中TensorFlow是完全基于數(shù)據(jù)流圖的。它是
    的頭像 發(fā)表于 08-17 16:10 ?1678次閱讀

    TensorFlow與PyTorch深度學(xué)習(xí)框架的比較與選擇

    深度學(xué)習(xí)作為人工智能領(lǐng)域的個(gè)重要分支,在過去十年中取得了顯著的進(jìn)展。在構(gòu)建和訓(xùn)練深度學(xué)習(xí)模型的
    的頭像 發(fā)表于 07-02 14:04 ?856次閱讀

    深度學(xué)習(xí)常用的Python庫(kù)

    深度學(xué)習(xí)作為人工智能的個(gè)重要分支,通過模擬人類大腦中的神經(jīng)網(wǎng)絡(luò)來解決復(fù)雜問題。Python作為種流行的編程語言,憑借其簡(jiǎn)潔的語法和豐富的
    的頭像 發(fā)表于 07-03 16:04 ?526次閱讀

    PyTorch的介紹與使用案例

    PyTorch個(gè)基于Python的開源機(jī)器學(xué)習(xí)庫(kù),它主要面向深度
    的頭像 發(fā)表于 07-10 14:19 ?338次閱讀

    PyTorch深度學(xué)習(xí)開發(fā)環(huán)境搭建指南

    PyTorch作為種流行的深度學(xué)習(xí)框架,其開發(fā)環(huán)境的搭建對(duì)于深度學(xué)習(xí)
    的頭像 發(fā)表于 07-16 18:29 ?722次閱讀

    Pytorch深度學(xué)習(xí)訓(xùn)練的方法

    掌握這 17 種方法,用最省力的方式,加速你的 Pytorch 深度學(xué)習(xí)訓(xùn)練。
    的頭像 發(fā)表于 10-28 14:05 ?123次閱讀
    <b class='flag-5'>Pytorch</b><b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>訓(xùn)練的方法