本文经AI新媒体量子比特(公众号ID:QbitAI)授权转载,转载请联系出处。“CNN老了,GNN来了!”当科学家们发现图神经网络(GNN)可以处理传统CNN无法处理的非欧洲数据时,许多之前深度学习无法解决的问题找到了关键。今天有一个图网络PyTorch库,在GitHub上获得2000多颗星,CNN之父YannLeCun翻了翻:叫做PyTorchGeometric,简称PyG,集合了26个图的代码实现网络研究。这个库也很快。与前身DGL图网络库相比,PyG***可以达到其15倍的速度。有各种各样的图书馆。如果要运行不规则结构的数据,请使用PyG。无论是图形、点云还是流形。△右侧是不规则的非欧式空间。这是一个丰富的库:许多模型的PyTorch实现,各种有用的转换(Transforms),以及大量的通用基准数据集,你所期望的应有尽有。说到实现,包括Kipf等人的图卷积网络(GCN)和Bengio实验室的图注意力网络(GAT),在2017-2019年的主要会议上有(至少)26个图网络研究,这里是Quickimplementations可以被找寻到。它能有多快?PyG的两位作者用NvidiaGTX1080Ti做了实验。对手DGL也是图网络库:在四个数据集中,PyG跑得比DGL快。最悬殊的比赛是在Cora数据集上跑GAT模型:跑200个epoch,对手用了33.4秒,而PyG只用了2.2秒,相当于对手速度的15倍。每个算法的实现都支持CPU计算和GPU计算。食法库的作者是多特蒙德工业大学的两位德国少年。△其中一位说有了PyG,开始一个图网络就像轻而易举的事。你看,实现一个边缘卷积层(EdgeConvolutionLayer)就像这样:1importtorch2fromtorch.nnimportSequentialasSeq,LinearasLin,ReLU3fromtorch_geometric.nnimportMessagePassing45classEdgeConv(MessagePassing):6def__init__(self,F_in,F_out):7super(EdgeConv,__().__init8self.mlp=Seq(Lin(2*F_in,F_out),ReLU(),Lin(F_out,F_out))910defforward(self,x,edge_index):11#xhasshape[N,F_in]12#edge_indexhasshape[2,E]13returnself.propagate(aggr='max',edge_index=edge_index,x=x)#shape[N,F_out]1415defmessage(self,x_i,x_j):16#x_ihasshape[E,F_in]17#x_jhasshape[E,F_in]18edge_features=torch.cat([x_i,x_j-x_i],dim=1)#shape[E,2*F_in]19returnself.mlp(edge_features)#shape[E,F_out]安装前确认,至少PyTorch1.0.0;确保cuda/bin在$PATH中,cuda/include在$CPATH中:1$python-c"importtorch;print(torch.__version__)"2>>>1.0.034$echo$PATH5>>>/usr/local/cuda/bin:...67$echo$CPATH8>>>/usr/local/cuda/include:...然后,开始各种pip安装。PyG项目传送门:https://github.com/rusty1s/pytorch_geometricPyG主页传送门:https://rusty1s.github.io/pytorch_geometric/build/html/index.htmlPyG论文传送门:https://arxiv.org/pdf/1903.02428.pdf
