新的PyTorch图神经网络库,快了14倍:LeCun盛赞,GitHub 2000星

作者: 方栗子 2019-03-15 11:34:19

 

本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。

“CNN已老,GNN当立!”

当科学家们发现,图神经网络 (GNN) 能搞定传统CNN处理不了的非欧数据,从前深度学习解不开的许多问题都找到了钥匙。

如今,有个图网络PyTorch库,已在GitHub摘下2000多星,还被CNN的爸爸Yann LeCun翻了牌:

它叫PyTorch Geometric,简称PyG,聚集了26项图网络研究的代码实现。

这个库还很,比起前辈DGL图网络库,PyG***可以达到它的15倍速度。

应有尽有的库

要跑结构不规则的数据,就用PyG吧。不管是图形 (Graphs),点云 (Point Clouds) 还是流形(Manifolds) 。

△ 右边是不规则的,非欧空间

这是一个丰盛的库:许多模型的PyTorch实现,各种有用的转换 (Transforms) ,以及大量常见的benchmark数据集,应有尽有。

说到实现,包括Kipf等人的图卷积网络 (GCN) 和Bengio实验室的图注意力网络 (GAT) 在内,2017-2019年各大顶会的 (至少) 26项图网络研究,这里都能找到快速实现。

到底能多快?PyG的两位作者用英伟达GTX 1080Ti做了实验。

对手DGL,也是图网络库:

在四个数据集里,PyG全部比DGL跑得快。最悬殊的一场比赛,是在Cora数据集上运行GAT模型:跑200个epoch,对手耗时33.4秒,PyG只要2.2秒,相当于对方速度的15倍。

每个算法的实现,都支持了CPU计算和GPU计算。

食用方法

库的作者,是两位德国少年,来自多特蒙德工业大学。

△ 其中一位

他们说,有了PyG,做起图网络就像一阵微风。

你看,实现一个边缘卷积层 (Edge Convolution Layer) 只要这样而已:

  1.  1import torch 
  2.  2from torch.nn import Sequential as Seq, Linear as Lin, ReLU 
  3.  3from torch_geometric.nn import MessagePassing 
  4.  4 
  5.  5class EdgeConv(MessagePassing): 
  6.  6 def __init__(self, F_in, F_out): 
  7.  7 super(EdgeConv, self).__init__() 
  8.  8 self.mlp = Seq(Lin(2 * F_in, F_out), ReLU(), Lin(F_out, F_out)) 
  9.  9 
  10. 10 def forward(self, x, edge_index): 
  11. 11 # x has shape [N, F_in] 
  12. 12 # edge_index has shape [2, E] 
  13. 13 return self.propagate(aggr='max', edge_index=edge_index, x=x) # shape [N, F_out] 
  14. 14 
  15. 15 def message(self, x_i, x_j): 
  16. 16 # x_i has shape [E, F_in] 
  17. 17 # x_j has shape [E, F_in] 
  18. 18 edge_features = torch.cat([x_i, x_j - x_i], dim=1# shape [E, 2 * F_in] 
  19. 19 return self.mlp(edge_features) # shape [E, F_out] 

安装之前确认一下,至少要有PyTorch 1.0.0;再确认一下cuda/bin在$PATH里,cuda/include在$CPATH里:

  1. 1$ python -c "import torch; print(torch.__version__)" 
  2. 2>>> 1.0.0 
  3. 3 
  4. 4$ echo $PATH 
  5. 5>>> /usr/local/cuda/bin:... 
  6. 6 
  7. 7$ echo $CPATH 
  8. 8>>> /usr/local/cuda/include:... 

然后,就开始各种pip install吧。

PyG项目传送门:

https://github.com/rusty1s/pytorch_geometric

PyG主页传送门:

https://rusty1s.github.io/pytorch_geometric/build/html/index.html

PyG论文传送门:

https://arxiv.org/pdf/1903.02428.pdf

神经网络 数据 图形
上一篇:2019年机器人领域值得关注五大趋势 下一篇:人工智能大会这么多,我们不一样
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

为什么神经网络如此强大?

众所周知,神经网络非常强大,可以将其用于几乎任何统计学习问题,而且效果很好。 但是您是否考虑过为什么会这样? 为什么在大多数情况下此方法比许多其他算法更强大?

闻数起舞 ·  4天前
你在打王者农药,有人却用iPhone来训练神经网络

在 iOS 设备上也可以直接训练 LeNet 卷积神经网络,而且性能一点也不差,iPhone 和 iPad 也能化为实实在在的生产力。

佚名 ·  2020-05-28 15:55:06
为什么AI没能让人类失业?

我们听了这么久有关「AI取代设计师」、「AI取代写作者」、「AI取代画家」、「AI取代司机」……的论调。然而时至今日,我们发现实际上,目前还没有一个职业「真正」被取代。

佚名 ·  2020-05-28 11:25:55
AI又一次打败了人类:仅凭一张自拍照片辨别个人性格

一项新研究表明,人工智能(AI)可在“仅凭一张自拍照片辨别个人性格”这件事上再次打败人类。与人类相比,机器能够更好地识别一种特征,通过分析人物面孔来确定物种不同的性格特质。

佚名 ·  2020-05-27 10:48:34
画图太丑拿不出手?有人做了套机器学习专用画图模板,还有暗黑模式

论文、博客写好了,里面的图可怎么画?对于很多研究人员和开发者来说,内容的「可视化」是一个大问题。如果从头开始画,配色、空间布局都很伤脑筋,而且画丑了也拿不出手,要是有模板可以套就好了。

张倩、魔王 ·  2020-05-26 14:28:12
5个杰出的商业机器学习用例

现在是仔细研究ML的好时机,看看您如何将其应用到您的业务中。下面是企业将ML应用到产品和服务创新的5种方式。

物联网IoT996 ·  2020-05-21 21:14:38
如何使用支持向量机学习非线性数据集

什么是支持向量机呢?支持向量机是监督机器学习模型,可对数据进行分类分析。实际上,支持向量机算法是寻找能将实例进行分离的优秀超平面的过程。

不靠谱的猫 ·  2020-05-21 09:02:37
机器学习的工作原理

机器学习是一种数据分析技术,可在数据集上构建预测模型,以提供有用的答案,这些答案可用于制定重要决策。 它利用统计概念和数学方法通过python和R等编码语言处理大数据。有多种机器学习技术。 但是,本文将介绍回归和分类。

闻数起舞 ·  2020-05-19 09:11:20
Copyright©2005-2020 51CTO.COM 版权所有 未经许可 请勿转载