资讯专栏INFORMATION COLUMN

LeCun推荐:最新PyTorch图神经网络库,速度快15倍

pinecone / 1969人阅读

摘要:图神经网络是近年发展起来的一个很有前景的深度学习方向,也是一种强大的图点云和流形表示学习方法。地址基于的几何深度学习扩展库是一个基于的几何深度学习扩展库,用于不规则结构输入数据,例如图点云和流形。与相比,训练模型的速度快了倍。

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

研究者主要将深度学习方法应用于欧氏结构数据 (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 网格或点云。

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

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

图 1

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

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

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

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

GraphSAGE (Hamilton et al., 2017)

attention-based operators GAT (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) 的 relational GCN operator

PointNet++ (Qi et al., 2017)

PointCNN (Li et al., 2018)

kernel-based methods MPNN (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 torch

from torch.nn import Sequential as Seq, Linear as Lin, ReLU

from torch_geometric.nn import MessagePassing

class 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 examples

python cora.py

paper:

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

GitHub:

https://github.com/rusty1s/pytorch_geometric

声明:本文版权归原作者所有,文章收集于网络,为传播信息而发,如有侵权,请联系小编及时处理,谢谢!欢迎加入本站公开兴趣群

商业智能与数据分析群

兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识

QQ群:81035754

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/4874.html

相关文章

  • PyTorch一周年战绩总结:是否比TensorFlow来势凶猛?

    摘要:截止到今天,已公开发行一周年。一年以来,社区中的用户不断做出贡献和优化,在此深表感谢。所以与衡量它的指标包括在机器学习研究论文中的使用。来自香港科技大学的在上推出了面向普通观众的在线课程。 Yann LeCun Twitter截止到今天,PyTorch 已公开发行一周年。一年以来,我们致力于打造一个灵活的深度学习研究平台。一年以来,PyTorch 社区中的用户不断做出贡献和优化,在此深表感谢...

    ymyang 评论0 收藏0
  • 23种深度学习排行榜:TensorFlow最活跃、Keras最流行

    摘要:我们对种用于数据科学的开源深度学习库作了排名。于年月发布了第名,已经跻身于深度学习库的上半部分。是最流行的深度学习前端第位是排名较高的非框架库。颇受对数据集使用深度学习的数据科学家的青睐。深度学习库的完整列表来自几个来源。 我们对23种用于数据科学的开源深度学习库作了排名。这番排名基于权重一样大小的三个指标:Github上的活动、Stack Overflow上的活动以及谷歌搜索结果。排名结果...

    princekin 评论0 收藏0
  • 做深度学习这么多年还不会挑GPU?这儿有份选购全攻略

    摘要:深度学习是一个对算力要求很高的领域。这一早期优势与英伟达强大的社区支持相结合,迅速增加了社区的规模。对他们的深度学习软件投入很少,因此不能指望英伟达和之间的软件差距将在未来缩小。 深度学习是一个对算力要求很高的领域。GPU的选择将从根本上决定你的深度学习体验。一个好的GPU可以让你快速获得实践经验,而这些经验是正是建立专业知识的关键。如果没有这种快速的反馈,你会花费过多时间,从错误中吸取教训...

    JohnLui 评论0 收藏0
  • 从硬件配置到框架选择,请以这种姿势入坑深度学习

    摘要:幸运的是,这些正是深度学习所需的计算类型。几乎可以肯定,英伟达是目前执行深度学习任务较好的选择。今年夏天,发布了平台提供深度学习支持。该工具适用于主流深度学习库如和。因为的简洁和强大的软件包扩展体系,它目前是深度学习中最常见的语言。 深度学习初学者经常会问到这些问题:开发深度学习系统,我们需要什么样的计算机?为什么绝大多数人会推荐英伟达 GPU?对于初学者而言哪种深度学习框架是较好的?如何将...

    marek 评论0 收藏0
  • 15个Python,让你学习数据科学更轻松

    摘要:在本节中,我们将看到一些最流行和最常用的库,用于机器学习和深度学习是用于数据挖掘,分析和机器学习的最流行的库。愿码提示网址是一个基于的框架,用于使用多个或进行有效的机器学习和深度学习。 showImg(https://segmentfault.com/img/remote/1460000018961827?w=999&h=562); 来源 | 愿码(ChainDesk.CN)内容编辑...

    W4n9Hu1 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<