桨叶图学习

pgl的Python项目详细描述


桨叶图学习(PGL)

APITutorials

桨图学习(PGL)是一种基于^ {A3}的高效灵活的图形学习框架。

The Framework of Paddle Graph Learning (PGL)

我们提供了用于存储/读取/查询图形结构数据的python接口和两个基本的计算接口,这两个接口分别是基于行走的和基于消息传递的,如上述pgl框架所示,用于构建尖端的图形学习算法。结合桨叶深度学习框架,我们能够同时支持图表示学习模型和图神经网络,因此我们的框架具有广泛的基于图的应用。

H2>亮点:高效灵活的消息传递范式

与其他模型相比,图神经网络最重要的优点之一是能够使用节点间的连接信息,但是对节点间的通信进行编码是非常麻烦的。在pgl中,我们采用类似于DGL消息传递范式来帮助轻松地构建定制图神经网络。用户只需编写sendrecv函数就可以轻松实现一个简单的gcn。如下图所示,第一步在图的边缘定义send函数,用户可以自定义send函数$\phi^e$将消息从源节点发送到目标节点。第二步,recv函数$\phi^v$负责将来自不同来源的$\oplus$消息聚合在一起。

The basic idea of message passing paradigm

如下图左侧所示,为了适应一般用户定义的消息聚合函数,DGL使用degree bucketing方法将具有相同degree的节点组合到一个批中,然后对每个批依次应用聚合函数$\oplus$。对于pgl udf聚合函数,我们将消息组织为PaddlePaddle中的LodTensor,将消息作为可变长度序列。我们利用桨叶中lodtensor的特性获得快速的并行聚集。

The parallel degree bucketing of PGL

用户只需调用paddle提供的sequence_ops函数就可以轻松实现高效的消息聚合。例如,使用sequence_pool对邻居消息求和。

importpaddle.fluidasfluiddefrecv(msg):returnfluid.layers.sequence_pool(msg,"sum")

虽然dgl对一般和函数、max函数和其他具有散点集的聚合函数进行了核融合优化。对于复杂的用户定义函数使用度桶算法,每个度桶的串行执行不能充分利用gpu提供的性能改进。然而,基于pgl lodtensor的消息操作是并行执行的,这可以充分利用gpu并行优化。即使没有散射道集优化,pgl仍然具有优异的性能。当然,我们仍然提供内置的分散优化消息聚合功能。

性能

我们用tesla v100-sxm2-16g对所有gnn算法进行了200个阶段的测试,得到了平均速度。在不提前停止的情况下,我们报告了测试数据集的准确性。

DatasetModelPGL AccuracyPGL speed (epoch time)DGL speed (epoch time)
CoraGCN81.75%0.0047s0.0045s
CoraGAT83.5%0.0119s0.0141s
PubmedGCN79.2%0.0049s0.0051s
PubmedGAT77%0.0193s0.0144s
CiteseerGCN70.2%0.00450.0046s
CiteseerGAT68.8%0.0124s0.0139s

系统要求

PGL要求:

  • 桨>;=1.5
  • 网络x

pgl同时支持python 2&3

安装

pip安装pgl

团队

pgl是由百度的nlp和paddle团队开发和维护的

许可证

pgl使用apache许可证2.0。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
trycatch块中的java,是否“最终”覆盖异常块中的“返回”?   java在无限循环运行时,不明白为什么   导入javax时发生java错误。jnlp库   java Android:通过编程方式从微调器创建ArrayList   java Apache camel在处理所有文件后创建空ctl文件   运行外部文件Java   批处理文件Java关于运行时的混淆。memory()与Windows的物理内存使用历史记录图   java Play Framework 2/冗余对象验证   java如何纠正“注入目标不能声明为静态的”警告   java使用“this::content”或“::content”不按预期工作,包含来自同一thymeleaf模板的片段   无法使用Java和Apache POI写入Excel文件   java仅使用Twitter4j搜索带有图片/媒体的推文   java Hibernate惰性加载在@OneToOne映射中不起作用   java从外部存储器读取数据库文件   java从引用bean的映射中获取键值   java Springboot应用在实现MongoRepository时无法运行   java从2d数组返回多个匹配项   java文件>字节[]>字符串>字节[]>文件转换   JavaFX按钮释放事件