最流行和最广泛使用的GNN库PyG(PyTorchGeometric)现已推出2.0版本,新版本提供了全面的异构Composition支持、GraphGam等诸多特性,这一系列的改进为用户带来了更好的用户体验。PyTorchGeometric(PyG)是一个建立在PyTorch之上的库,用于为与结构化数据相关的一系列应用程序编写和训练图神经网络(GNN)。PyG对机器学习研究人员以及机器学习工具包的新用户都很友好。在其特性和功能方面,PyG具有易于使用和统一的API,用户在实现和运行图神经网络的底层机制上花费的时间更少。训练自定义GNN模型只需要10到20行代码。PyG涵盖了大量SOTAGNN架构以及训练和可扩展管道,并且易于扩展以匹配用户自己的特定用例或进行他们自己的GNN研究。此外,PyG中新的GraphGym使用户能够轻松地重现GNN实验,执行和分析数千个GNN实验,并将自定义模块嵌入到GNN学习管道中。近日,PyG核心负责人(Corelead)MatthiasFey宣布PyG2.0版本来了!新版本提供了完整的异构图支持、GraphGam和许多其他功能。PyG2.0详情地址:https://github.com/pyg-team/pytorch_geometric/releases/tag/2.0.0PyG2.0新特性PyG2.0是一个新版本,提供复杂异构图支持、GraphGym集成等新特性。PyG2.0提供了完整的异构图支持。异构图支持包括数据存储层的完全重写(同时保持向后兼容性)、异构图转换、通过邻域采样的关系数据加载例程,以及一整套异构GNN模型/示例。突出异构图存储:异构图现在可以存储在自己专用的data.HeteroData类中。fromtorch_geometric.dataimportHeteroDatadata=HeteroData()#Createtwonodetypes“paper”和“author”holdingasinglefeaturematrix:data['paper'].x=torch.randn(num_papers,num_paper_features)data['author'].x=torch.randn(num_authors,num_authors_features)#Createanedgetype("paper","written_by","author")持有它的图形连通性:data['paper','written_by','author'].edge_index=...#[2,num_edges]异构迷你-BatchLoading:异构图可以分别通过loader.DataLoader和loader.NextorLoader将多个小图和单个大图转为mini-batch。这些加载器现在可以处理同构图和异构图:fromtorch_geometric.loaderimportDataLoaderloader=DataLoader(heterogeneous_graph_dataset,batch_size=32,shuffle=True)fromtorch_geometric.loaderimportNeighborLoaderloader=NeighborLoader(heterogeneous_graph,num_neighbors=[30,30],nodes=put('paper',data['paper'].train_mask),shuffle=True)异构图神经网络:现在可以通过nn.to_hetero、nn.to_hetero_with_bases从同构GNN轻松创建异构GNN。这些过程采用现有的GNN模型并复制其消息功能以考虑不同的节点和边类型:conv1=SAGEConv((-1,-1),hidden_??channels)self.conv2=SAGEConv((-1,-1),out_channels)defforward(self,x,edge_index):x=self.conv1(x,edge_index)。relu()x=self.conv2(x,edge_index)returnxmodel=GNN(hidden_??channels=64,out_channels=dataset.num_classes)model=to_hetero(model,data.metadata(),aggr='sum')由GraphGymExperimentalPyG管理2.0现在通过torch_geometric.graphgym正式支持GraphGym。总的来说,GraphGym是一个通过高度模块化的管道从配置文件设计和评估图神经网络的平台:GraphGym是开始学习标准化GNN实现和评估的最佳平台;GraphGym提供了一个简单的界面来并行尝试数千个GNN架构,以找到针对特定任务的最佳设计;GraphGym使超参数搜索和可视化哪些设计选择更好变得容易。突破性变化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):passdef__inc__(self,key,value,*args,**kwargs):pass如果您在自定义data.Data对象中修改了__cat_dim__或__inc__,请确保应用上述更改。更多改动请参考原项目。核心团队成员PyG核心团队有6名成员,包括TUD??ortmund图机器学习四年级博士生MatthiasFey、TUDortmund博士生JanEricLenssen(核心贡献者)、大牛Jure在图形网络领域和斯坦福大学计算机科学副教授。Leskovec(作为顾问)。从左到右,MatthiasFey、JanEricLenssen和JureLeskovec。此外,还有三名中??国成员,分别是四年级博士尤嘉轩。斯坦福大学计算机科学专业学生(核心带头人),RexYing,博士。作为助理教授)和YueZhao,三年级博士。卡内基梅隆大学汉斯学院学生(核心贡献者)。从左到右分别是游嘉轩、雷克斯英和赵悦。日前,赵越在知乎分享了自己参与PyG2.0版本设计和升级过程的心得。有兴趣的读者可以参考阅读。知乎链接:https://www.zhihu.com/pin/1420674585365196800
