支持异构图、集成GraphGym,超好用的图神经网络库PyG更新2.0版本 您所在的位置:网站首页 gcn异构图 支持异构图、集成GraphGym,超好用的图神经网络库PyG更新2.0版本

支持异构图、集成GraphGym,超好用的图神经网络库PyG更新2.0版本

2024-01-08 05:08| 来源: 网络整理| 查看: 265

a663892fc6d7cc15fd4e1ad01dbad78f.gif

©作者 | 陈萍、杜伟

来源 | 机器之心

当前最流行和广泛使用的 GNN 库 PyG(PyTorch Geometric)现在出 2.0 版本了,新版本提供了全面的异构图支持、GraphGam 以及很多其他特性,这一系列改进,为使用者带来了更好的用户体验。

PyTorch Geometric(PyG)是一个构建于 PyTorch 之上的库,用来为一系列与结构化数据相关的应用编写和训练图神经网络(GNN)。PyG 对机器学习研究者以及机器学习工具包的首次使用者都很友好。

70a0777d6f00be28f1a3e17157472578.png

就其特征和功能而言,PyG 具有易用和统一的 API,用户花费更少的时间在实现和运行图神经网络的底层机制上,只需要 10 至 20 行代码就可以训练自定义 GNN 模型。PyG 涵盖了大量的 SOTA GNN 架构以及训练和可扩展流程,并且易于扩展以匹配用户自己的特定用例或进行自己的 GNN 研究。

此外,PyG 中的全新 GraphGym 使得用户可以轻松地复现 GNN 实验,执行和分析数千个 GNN 实验,并将自定义模块嵌入到 GNN 学习 pipeline 中。

近日,PyG 核心领导者(Core lead)Matthias Fey 宣布 PyG 2.0 版本来了!新版本提供了全面的异构图支持、GraphGam 以及很多其他特性。

3a2201322f11b80859f5d0bf12f98dd2.png

PyG 2.0 详情地址:https://github.com/pyg-team/pytorch_geometric/releases/tag/2.0.0

PyG 2.0 新特性

PyG 2.0 是一个新的版本,提供了复杂的异构图支持、GraphGym 集成以及其他新特性。

PyG 2.0 中提供了完全的异构图支持。异构图支持包括数据存储层的完整重写(同时保持向后兼容性)、异构图转换、通过邻采样的关系型数据加载例程,以及一整套异构 GNN 模型 / 示例。

突出亮点

异构图存储:异构图现在可以存储在它们自己的专用 data.HeteroData 类中。

from torch_geometric.data import HeteroData data = HeteroData() # Create two node types "paper" and "author" holding a single feature matrix: data['paper'].x = torch.randn(num_papers, num_paper_features) data['author'].x = torch.randn(num_authors, num_authors_features) # Create an edge type ("paper", "written_by", "author") holding its graph connectivity: data['paper', 'written_by', 'author'].edge_index = ... # [2, num_edges]

异构 Mini-Batch 加载:异构图可以分别通过 loader.DataLoader 和 loader.NextorLoader 对许多小的、单个的巨大图进行转化,转换成 mini-batches。这些 loaders 现在可以处理同构图和异构图:

from torch_geometric.loader import DataLoader loader = DataLoader(heterogeneous_graph_dataset, batch_size=32, shuffle=True) from torch_geometric.loader import NeighborLoader loader = NeighborLoader(heterogeneous_graph, num_neighbors=[30, 30], batch_size=128, input_nodes=('paper', data['paper'].train_mask), shuffle=True)

异构图神经网络:异构 GNN 现在可以通过 nn.to_hetero、nn.to_hetero_with_bases 从同构 GNN 轻松创建。这些进程采用现有的 GNN 模型并复制其消息功能,以考虑不同的节点和边缘类型:

from torch_geometric.nn import SAGEConv, to_hetero class GNN(torch.nn.Module): def __init__(hidden_channels, out_channels): super().__init__() self.conv1 = SAGEConv((-1, -1), hidden_channels) self.conv2 = SAGEConv((-1, -1), out_channels) def forward(self, x, edge_index): x = self.conv1(x, edge_index).relu() x = self.conv2(x, edge_index) return x model = GNN(hidden_channels=64, out_channels=dataset.num_classes) model = to_hetero(model, data.metadata(), aggr='sum')

a12d645a5f070d79fa69c8aa9143ff78.png

使用 GraphGym 管理实验

PyG 2.0 现在通过 torch_geometric.graphgym 正式支持 GraphGym。总的来说,GraphGym 是一个平台,用于通过高度模块化的 pipeline 从配置文件中设计和评估图神经网络:

GraphGym 是开始学习标准化 GNN 实现和评估的最佳平台;

GraphGym 提供了一个简单的接口来并行尝试数千个 GNN 架构,以找到适合特定任务的最佳设计;

GraphGym 可轻松进行超参数搜索并可视化哪些设计选择更好。

8e9985b8e7ded2afa9c0a702b306e6d1.png

重大改变

datasets.AMiner 数据集现在返回 data.HeteroData 对象;transforms.AddTrainValTestMask 已被替换为 transforms.RandomNodeSplit;由于 data.Data 的存储布局发生了显着变化以支持异构图,因此需要通过删除 root/processed 文件夹来重新处理已处理的数据集。

此外,data.Data.__cat_dim__ 、 data.Data.__inc__现在需要额外的参数输入:

def __cat_dim__(self, key, value, *args, **kwargs): pass def __inc__(self, key, value, *args, **kwargs): pass

如果你修改了自定义 data.Data 对象中的__cat_dim__或__inc__ ,请确保应用上述更改。

了解更多变化,请参考原项目。

核心团队成员

PyG 核心团队共有 6 位成员,包括多特蒙德工业大学四年级图机器学习博士生 Matthias Fey、多特蒙德工业大学博士生 Jan Eric Lenssen(核心贡献者)和图网络领域大牛 & 斯坦福计算机科学副教授 Jure Leskovec(担任顾问)。

f6cdcc63d8f085aa7fbbf88bdd622d1c.png

从左至右依次为 Matthias Fey、Jan Eric Lenssen 和 Jure Leskovec。

此外还有三位华人成员,分别是斯坦福大学计算机科学四年级博士生尤佳轩(Jiaxuan You,核心领导者)、斯坦福大学计算机科学博士生 Rex Ying(核心贡献者,他将于 2022 年加入耶鲁大学担任助理教授)和卡内基梅隆大学 - 汉斯学院三年级博士生赵越(Yue Zhao,核心贡献者)。

3f2a53537e2fbf2682d3723f758ba4de.png

从左至右依次为尤佳轩、Rex Ying 和赵越。

日前,赵越在知乎分享了自己参与 PyG 2.0 版本设计与升级过程中的心得体会,感兴趣的读者可以参考阅读。

知乎链接:https://www.zhihu.com/pin/1420674585365196800

参考链接:

http://www.pyg.org/

7d52f0a8985f15dfd2f70641ac203d4d.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析、科研心得或竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:[email protected] 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

770f30182c26d95a6bd540dcf34f4ce7.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

a845c9777bad27bf7d578e2b9ba3df72.png



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有