一些优秀的Github仓库源码与框架

图深度学习是当前深度学习领域最热门的方向之一,图神经网络(gnn)不仅在理论上有所创新,在工业界中也真实的应用。本文介绍 github 上热门的图神经网络源码及框架,方便研究人员和工程师上手图深度学习。
近两年来,图卷积、图注意力网络等图神经网络在学术界、工业界都有广泛的应用。虽然大多数图神经网络理论包含复杂的公式推导,但最终产出的网络结构(公式)缺一般比较简单,但这并不意味着图神经网络的实现会很简单。
导致图神经网络实现复杂的原因主要有以下几个:
以图卷积网络为例,它的原版依赖完整邻接矩阵和全部节点作为输入,对内存、显存和计算效率都造成了限制。好在目前有一些理论如 faskgcn 可以通过 mini-batch 等方式来进行数据切分从而解决这个问题。
虽然利用稀疏矩阵可以一定程度上缓解上述问题,但依然不能处理大规模的数据。另外,由于多层网络结构的复杂,一般在实现时要同时实现稀疏版和非稀疏版的组件。
对图结构数据的预处理比较麻烦。例如在处理异构网络时,有时需要对每种类型的节点进行独立地编号、为每种关系独立建立子图等,才能将图数据转换为深度学习模型可用的数值化数据,并且任何一个细节可能都会影响算法的效率(如邻节点列表的数据结构使用 list 和 set 会导致不同的采样效率和查询效率)。
需要一些基于图的额外操作,例如 random walk、有类型约束的 random walk(meta-path)等,由于图结构的复杂性,这些操作在单机上的实现都比较费力,更不用说在大规模分布式上。
图深度学习研究者和工业界在 github 上开源了一些优秀的图神经网络的实现其框架,都从一定程度上去解决了上述的问题,非常值得我们借鉴。下面我们列出一些优秀的 github 仓库:
deepwalk / line
链接:
deepwalk: https://github.com/phanein/deepwalk
line: https://github.com/tangjianpku/line
简介:
虽然 deepwalk 和 line 属于网络表示学习中的算法,与现在端到端的图神经网络有一定的区别,但目前一些图神经网络应用(如社交网络、引用网络节点分类)依然使用 deepwalk/line 来作为预训练算法,无监督地为节点获得初始特征表示。另外,deepwalk 项目中的 random walk 也可以被直接拿来用作图神经网络的数据采样操作。
图卷积网络 gcn tensorflow/pytorch 版
链接:
tensorflow:https://github.com/tkipf/gcn
pytorch:https://github.com/tkipf/pygcn
简介:
gcn 论文作者提供的源码,该源码提供了大量关于稀疏矩阵的代码。例如如何构建稀疏的变换矩阵(这部分代码被其他许多项目复用)、如何将稀疏 csr 矩阵变换为 tensorflow/pytorch 的稀疏 tensor,以及如何构建兼容稀疏和非稀疏的全连接层等,几乎是图神经网络必读的源码之一了。
快速图卷积网络 fastgcn tensorflow 版
链接:
https://github.com/matenure/fastgcn
简介:
fastgcn 作者提供的源码,基于采样的方式构建 mini-match 来训练 gcn,解决了 gcn 不能处理大规模数据的问题。
图注意力网络 gat tensorflow 版
链接:
https://github.com/petarv-/gat
简介:
gat 论文作者提供的源码。源码中关于 mask 的实现、以及稀疏版 gat 的实现值得借鉴。
mini-batch 版图注意力网络 deepinf
链接:
https://github.com/xptree/deepinf
简介:
deepinf 论文其实是 gat 的一个应用,但其基于 random walk 采样子图构建 mini-batch 的方法解决了 gat 在大规模网络上应用的问题。
deepmind 开源的图神经网络框架graph nets
链接:
https://github.com/deepmind/graph_nets
简介:
基于 tensorflow 和 sonnet。上面的项目更侧重于节点特征的计算,而 graph_nets 同时包含节点和边的计算,可用于一些高级任务,如最短路径、物理场景模拟等。
工业级分布式图神经网络框架 euler
链接:
https://github.com/alibaba/euler
简介:
euler 是阿里巴巴开源的大规模分布式的图学习框架,配合 tensorflow 或者阿里开源的 xdl 等深度学习工具,它支持用户在数十亿点数百亿边的复杂异构图上进行模型训练。

RTL级设计的基本要素和步骤是什么
UC3842引脚排序及封装,UC3842典型应用电路及工作原理
双网口以太网IO模块:实现安全可靠的数据交换
山东2000余项大数据助力复工复产
愈来愈热的人工智能的下一步将走向哪里?
一些优秀的Github仓库源码与框架
关于华阳电子外后视镜的演进和亮点
具有自动重合闸的预付费电表专用断路器的原理及设计
使用Voltage-controlled Voltage Source仿真放大器
2023 SAP TechEd,让每位开发者都变身为生成式AI开发者
恩智浦凭借移动微型扬声器中的9.5V升压电压实现音质突破
雷军:小米第二款5G手机在国内发布,明年第二季度5G产品大规模到来
dfrobot386AMP Module音频放大模块简介
在Linux上保护SSH服务器连接的8种方法
64通道压电陶瓷驱动控制器的特点是什么
深度学习与农业科研,小麦籽粒表形鉴定方法
如何制作出一块高质量的双面PCB板
【虹科干货】TWAMP:什么是双向主动测量协议?
华为nova 5 Pro跑分曝光该机单核跑分为3520分多核跑分为9497分
飞思仪表|压缩空气系统介绍