0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一个基于PyTorch的几何深度学习扩展库,为GNN的研究和应用再添利器

DPVg_AI_era 来源:lp 2019-03-11 08:49 次阅读

德国研究者提出最新几何深度学习扩展库 PyTorch Geometric (PyG),具有快速、易用的优势,使得实现图神经网络变得非常容易。作者开源了他们的方法,并提供教程和实例。

过去十年来,深度学习方法(例如卷积神经网络和递归神经网络)在许多领域取得了前所未有的成就,例如计算机视觉语音识别

研究者主要将深度学习方法应用于欧氏结构数据(Euclidean domains),但在许多重要的应用领域,如生物学、物理学、网络科学、推荐系统和计算机图形学,可能不得不处理非欧式结构的数据,比如图和流形。

直到最近,深度学习在这些特定领域的采用一直很滞后,主要是因为数据的非欧氏结构性质使得基本操作(例如卷积)的定义相当困难。在这个意义上,几何深度学习将深度学习技术扩展到了图/流形结构数据。

图神经网络(GNN)是近年发展起来的一个很有前景的深度学习方向,也是一种强大的图、点云和流形表示学习方法。

然而,实现GNN具有挑战性,因为需要在高度稀疏且不规则、不同大小的数据上实现高GPU吞吐量。

近日,德国多特蒙德工业大学的研究者两位Matthias Fey和Jan E. Lenssen,提出了一个基于PyTorch的几何深度学习扩展库PyTorch Geometric (PyG),为GNN的研究和应用再添利器。

论文:

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

Yann Lecun也热情推荐了这个工作,称赞它是一个快速、美观的PyTorch库,用于几何深度学习(图和其他不规则结构的神经网络)。

作者声称,PyG甚至比几个月前NYU、AWS联合开发的图神经网络库 DGL(Deep Graph Library)快了15倍!

作者在论文中写道:“这是一个PyTorch的几何深度学习扩展库,它利用专用的CUDA 内核实现了高性能。它遵循一个简单的消息传递API,将最近提出的大多数卷积和池化层捆绑到一个统一的框架中。所有实现的方法都支持CPU和GPU计算,并遵循一个不可变的数据流范式,该范式支持图结构随时间的动态变化。”

PyG已经在MIT许可下发布,可以在GitHub上获取。里面有完整的文档说明,并提供了作为起点的教程和示例。

地址:

https://github.com/rusty1s/pytorch_geometric

PyTorch Geometry:基于PyTorch的几何深度学习扩展库

PyTorch Geometry是一个基于PyTorch的几何深度学习扩展库,用于不规则结构输入数据,例如图(graphs)、点云(point clouds)和流形(manifolds)。

PyTorch Geometry包含了各种针对图形和其他不规则结构的深度学习方法,也称为几何深度学习,来自于许多已发表的论文。

此外,它还包含一个易于使用的mini-batch加载器、多GPU支持、大量通用基准数据集和有用的转换,既可以学习任意图形,也可以学习3D网格或点云。

在PyG中,我们用一个节点特征矩阵和一个稀疏邻接元组代表一个图

其中以坐标格式编码索引,保持 D 维边缘特征。

所有面向用户的API,据加载例程、多GPU支持、数据增强或模型实例化都很大程度上受到PyTorch的启发,以便使它们尽可能保持熟悉。

Neighborhood Aggregation:将卷积算子推广到不规则域通常表示为一个邻域聚合(neighborhood aggregation),或message passing scheme (Gilmer et al., 2017)。

其中,表示一个可微分的置换不变函数,例如 sum, mean or max,而表示可微分函数,例如 MLP。

在实践中,这可以通过收集和散布节点特性并利用broadcasting进行

图1

几乎所有最近提出的邻域聚合函数可以利用这个接口,已经集成到PyG的方法包括(但不限于):

对于任意图形学习,我们已经实现了:

GCN(Kipf & Welling, 2017)和它的简化版本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)

对于学习具有多维边缘特征的点云,流形和图,我们提供了:

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).

实验评估

我们通过对同类评估场景进行综合比较研究,评估了利用PyG所实现方法的正确性。所有使用过的数据集的描述和统计可以在论文附录中找到。

对于所有的实验,我们都尽可能地遵循各自原始论文的超参数设置,GitHub存储库中提供了复制所有实验的代码。

表2:图分类的结果

表3:点云分类的结果

我们对多个数据模型对进行了多次实验,并报告了在单个NVIDIA GTX 1080 Ti上获得的整个训练过程的运行情况(表4)。与Deep Graph Library (DGL)(Wang et al., 2018a)相比,PyG训练模型的速度快了15倍。

表4:训练runtime比较

安装、教程&示例

PyTorch Geometric使实现图卷积网络变得非常容易(请参阅GitHub上的教程)。

例如,这就是实现一个边缘卷积层(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]

此外,与其他深度图神经网络库相比,PyTorch Geometric的速度更快:

表:在一块NVIDIA GTX 1080Ti上的训练runtime

安装

确保至少安装了PyTorch 1.0.0,并验证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:...

然后运行:

$ 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

运行示例

cd examplespython cora.py

paper:

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

GitHub:

https://github.com/rusty1s/pytorch_geometric

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4762

    浏览量

    100535
  • 深度学习
    +关注

    关注

    73

    文章

    5492

    浏览量

    120975
  • pytorch
    +关注

    关注

    2

    文章

    803

    浏览量

    13146
  • GNN
    GNN
    +关注

    关注

    1

    文章

    31

    浏览量

    6328

原文标题:LeCun推荐:最新PyTorch图神经网络库,速度快15倍(GitHub+论文)

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    机器学习实战:GNN加速器的FPGA解决方案

    展现给读者。2. GNN 简介GNN的架构在宏观层面有着很多与传统CNN类似的地方,比如卷积层、Poing、激活函数、机器学习处理器(MP)和FC层等等模块,都会在GNN中得以应用。下
    发表于 10-20 09:48

    Pytorch入门教程与范例

    pytorch基于 python 的深度学习py
    发表于 11-15 17:50 5375次阅读
    <b class='flag-5'>Pytorch</b>入门教程与范例

    Facebook研究开放新框架,让深度学习更加容易

    FAIR直是深度学习领域研究和开源框架的定期贡献者。从PyTorch到ONNX, FAIR团队
    的头像 发表于 03-13 15:23 1675次阅读

    基于PyTorch深度学习入门教程之PyTorch的安装和配置

    神经网络结构,并且运用各种深度学习算法训练网络参数,进而解决各种任务。 本文从PyTorch环境配置开始。PyTorch种Python接
    的头像 发表于 02-16 15:15 2553次阅读

    基于PyTorch深度学习入门教程之PyTorch简单知识

    计算 Part3:使用PyTorch构建神经网络 Part4:训练神经网络分类器 Part5:数据并行化 本文是关于Part1的内容
    的头像 发表于 02-16 15:20 2218次阅读

    PyTorch 的 Autograd 机制和使用

    PyTorch 作为深度学习平台,在深度学习任务
    的头像 发表于 08-15 09:37 1075次阅读

    ​计算机视觉深度学习训练推理框架

    PyTorch是由Facebook人工智能研究小组开发的种基于Lua编写的Torch的Python实现的深度
    的头像 发表于 05-08 14:20 1123次阅读
    ​计算机视觉<b class='flag-5'>深度</b><b class='flag-5'>学习</b>训练推理框架

    PyTorch教程12.1之优化和深度学习

    电子发烧友网站提供《PyTorch教程12.1之优化和深度学习.pdf》资料免费下载
    发表于 06-05 15:08 0次下载
    <b class='flag-5'>PyTorch</b>教程12.1之优化和<b class='flag-5'>深度</b><b class='flag-5'>学习</b>

    深度学习框架pytorch入门与实践

    深度学习框架pytorch入门与实践 深度学习是机器学习中的
    的头像 发表于 08-17 16:03 1568次阅读

    深度学习框架pytorch介绍

    深度学习框架pytorch介绍 PyTorch是由Facebook创建的开源机器学习框架,其中TensorFlow是完全基于数据流图的。它是
    的头像 发表于 08-17 16:10 1704次阅读

    TensorFlow与PyTorch深度学习框架的比较与选择

    深度学习作为人工智能领域的重要分支,在过去十年中取得了显著的进展。在构建和训练深度学习模型的
    的头像 发表于 07-02 14:04 886次阅读

    深度学习常用的Python

    深度学习作为人工智能的重要分支,通过模拟人类大脑中的神经网络来解决复杂问题。Python作为种流行的编程语言,凭借其简洁的语法和丰富的
    的头像 发表于 07-03 16:04 565次阅读

    PyTorch的介绍与使用案例

    PyTorch基于Python的开源机器学习,它主要面向深度
    的头像 发表于 07-10 14:19 353次阅读

    PyTorch深度学习开发环境搭建指南

    PyTorch作为种流行的深度学习框架,其开发环境的搭建对于深度学习
    的头像 发表于 07-16 18:29 824次阅读

    Pytorch深度学习训练的方法

    掌握这 17 种方法,用最省力的方式,加速你的 Pytorch 深度学习训练。
    的头像 发表于 10-28 14:05 142次阅读
    <b class='flag-5'>Pytorch</b><b class='flag-5'>深度</b><b class='flag-5'>学习</b>训练的方法