机器之心报道 编辑:陈萍、杜伟 当前最流行和广泛使用的GNN库PyG(PyTorchGeometric)现在出2。0版本了,新版本提供了全面的异构图支持、GraphGam以及很多其他特性,这一系列改进,为使用者带来了更好的用户体验。 PyTorchGeometric(PyG)是一个构建于PyTorch之上的库,用来为一系列与结构化数据相关的应用编写和训练图神经网络(GNN)。PyG对机器学习研究者以及机器学习工具包的首次使用者都很友好。 就其特征和功能而言,PyG具有易用和统一的API,用户花费更少的时间在实现和运行图神经网络的底层机制上,只需要10至20行代码就可以训练自定义GNN模型。PyG涵盖了大量的SOTAGNN架构以及训练和可扩展流程,并且易于扩展以匹配用户自己的特定用例或进行自己的GNN研究。 此外,PyG中的全新GraphGym使得用户可以轻松地复现GNN实验,执行和分析数千个GNN实验,并将自定义模块嵌入到GNN学习pipeline中。 近日,PyG核心领导者(Corelead)MatthiasFey宣布PyG2。0版本来了!新版本提供了全面的异构图支持、GraphGam以及很多其他特性。 PyG2。0详情地址:https:github。compygteampytorchgeometricreleasestag2。0。0 PyG2。0新特性 PyG2。0是一个新的版本,提供了复杂的异构图支持、GraphGym集成以及其他新特性。 PyG2。0中提供了完全的异构图支持。异构图支持包括数据存储层的完整重写(同时保持向后兼容性)、异构图转换、通过邻采样的关系型数据加载例程,以及一整套异构GNN模型示例。 突出亮点 异构图存储:异构图现在可以存储在它们自己的专用data。HeteroData类中。fromtorchgeometric。dataimportHeteroDatadataHeteroData()Createtwonodetypespaperandauthorholdingasinglefeaturematrix:data〔paper〕。xtorch。randn(numpapers,numpaperfeatures)data〔author〕。xtorch。randn(numauthors,numauthorsfeatures)Createanedgetype(paper,writtenby,author)holdingitsgraphconnectivity:data〔paper,writtenby,author〕。edgeindex。。。〔2,numedges〕 异构MiniBatch加载:异构图可以分别通过loader。DataLoader和loader。NextorLoader对许多小的、单个的巨大图进行转化,转换成minibatches。这些loaders现在可以处理同构图和异构图:fromtorchgeometric。loaderimportDataLoaderloaderDataLoader(heterogeneousgraphdataset,batchsize32,shuffleTrue)fromtorchgeometric。loaderimportNeighborLoaderloaderNeighborLoader(heterogeneousgraph,numneighbors〔30,30〕,batchsize128,inputnodes(paper,data〔paper〕。trainmask),shuffleTrue) 异构图神经网络:异构GNN现在可以通过nn。tohetero、nn。toheterowithbases从同构GNN轻松创建。这些进程采用现有的GNN模型并复制其消息功能,以考虑不同的节点和边缘类型:fromtorchgeometric。nnimportSAGEConv,toheteroclassGNN(torch。nn。Module):definit(hiddenchannels,outchannels):super()。init()self。conv1SAGEConv((1,1),hiddenchannels)self。conv2SAGEConv((1,1),outchannels)defforward(self,x,edgeindex):xself。conv1(x,edgeindex)。relu()xself。conv2(x,edgeindex)returnxmodelGNN(hiddenchannels64,outchannelsdataset。numclasses)modeltohetero(model,data。metadata(),aggrsum) 使用GraphGym管理实验 PyG2。0现在通过torchgeometric。graphgym正式支持GraphGym。总的来说,GraphGym是一个平台,用于通过高度模块化的pipeline从配置文件中设计和评估图神经网络:GraphGym是开始学习标准化GNN实现和评估的最佳平台;GraphGym提供了一个简单的接口来并行尝试数千个GNN架构,以找到适合特定任务的最佳设计;GraphGym可轻松进行超参数搜索并可视化哪些设计选择更好。 重大改变 datasets。AMiner数据集现在返回data。HeteroData对象;transforms。AddTrainValTestMask已被替换为transforms。RandomNodeS由于data。Data的存储布局发生了显着变化以支持异构图,因此需要通过删除rootprocessed文件夹来重新处理已处理的数据集。 此外,data。Data。catdim、data。Data。inc现在需要额外的参数输入:defcatdim(self,key,value,args,kwargs):passdefinc(self,key,value,args,kwargs):pass 如果你修改了自定义data。Data对象中的catdim或inc,请确保应用上述更改。 了解更多变化,请参考原项目。 核心团队成员 PyG核心团队共有6位成员,包括多特蒙德工业大学四年级图机器学习博士生MatthiasFey、多特蒙德工业大学博士生JanEricLenssen(核心贡献者)和图网络领域大牛斯坦福计算机科学副教授JureLeskovec(担任顾问)。 从左至右依次为MatthiasFey、JanEricLenssen和JureLeskovec。 此外还有三位华人成员,分别是斯坦福大学计算机科学四年级博士生尤佳轩(JiaxuanYou,核心领导者)、斯坦福大学计算机科学博士生RexYing(核心贡献者,他将于2022年加入耶鲁大学担任助理教授)和卡内基梅隆大学汉斯学院三年级博士生赵越(YueZhao,核心贡献者)。 从左至右依次为尤佳轩、RexYing和赵越。 日前,赵越在知乎分享了自己参与PyG2。0版本设计与升级过程中的心得体会,感兴趣的读者可以参考阅读。 知乎链接:https:www。zhihu。compin1420674585365196800 参考链接: http:www。pyg。org