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

    文章

    4562

    浏览量

    98643
  • 深度学习
    +关注

    关注

    73

    文章

    5220

    浏览量

    119863
  • pytorch
    +关注

    关注

    2

    文章

    759

    浏览量

    12822
  • GNN
    GNN
    +关注

    关注

    1

    文章

    31

    浏览量

    6284

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

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

收藏 人收藏

    评论

    相关推荐

    十大Python机器学习常用

    语言,由于实现了动态计算图范式, PyTorch 已经成为众多研究人员的首选框架之,可以计算梯度,而且非常快,可扩展性强。3. Caffe2Caffe2 支持分布式训练、部署(即使
    发表于 05-02 16:37

    Nanopi深度学习之路(1)深度学习框架分析

    设备”,没错,虽然Nanopi迷你,但确实能够运行深度学习算法。但试用机会少的可怜,只有5,难道定要对申请志在必得吗?NO!NO!NO!深度
    发表于 06-04 22:32

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

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

    人工智能AI-深度学习C#&LabVIEW视觉控制演示效果

    本帖最后由 wcl86 于 2021-5-18 22:39 编辑 你将会学到的:1、解决如何让机器能够模仿人脑的思考方式,从而摆脱原来的固有数据比较的限制,让机器能够通过深度学习理解这个世界
    发表于 11-27 11:54

    RK3399开发板人工智能深度学习框架

    `迅率先在RK3399 开发板上支持了Docker、TensorFlow目标检测API、OpenCV、Keras、scikit-learn、pytorch和Python等,组成了人工智能深度
    发表于 05-21 17:28

    GNN(图神经网络)硬件加速的FPGA实战解决方案

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

    基于深度学习的异常检测的研究方法

    异常检测的深度学习研究综述原文:arXiv:1901.03407摘要异常检测是重要的问题,在不同的
    发表于 07-12 07:10

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

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

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

    是一个基于Python的科学计算框架,用于进行深度学习相关研究。对于Python语言的入门,可以参考之前的两篇介绍PythonNumpy的博客。分别是Python Numpy 教程(
    的头像 发表于 02-16 15:20 1996次阅读

    PyTorch开源深度学习框架简介

    PyTorch 是一种开源深度学习框架,以出色的灵活性和易用性著称。这在一定程度上是因为与机器学习开发者和数据科学家所青睐的热门 Python 高级编程语言兼容。
    的头像 发表于 07-29 10:26 3684次阅读

    PyTorch教程5.5之深度学习中的泛化

    电子发烧友网站提供《PyTorch教程5.5之深度学习中的泛化.pdf》资料免费下载
    发表于 06-05 15:31 1次下载
    <b class='flag-5'>PyTorch</b>教程5.5之<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>

    深度解析可扩展且保密的深度学习

    扩展且保密的深度学习
    发表于 06-28 16:09 214次阅读
    <b class='flag-5'>深度</b>解析可<b class='flag-5'>扩展</b>且保密的<b class='flag-5'>深度</b><b class='flag-5'>学习</b>

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

    深度学习框架pytorch入门与实践 深度学习是机器学习中的一个分支,它使用多层神经网络对大量数
    的头像 发表于 08-17 16:03 1186次阅读

    深度学习框架pytorch介绍

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