【导读】随着图卷积网络、图注意网络等图神经网络研究的飞速发展,越来越多的工业应用开始引入图神经网络并取得了可观的效果。由于网络结构的复杂性、数据稀疏性以及数据量等问题,图神经网络的开发需要引入大量的工程策略和技巧。本文介绍图神经网络开发中几个必备的组件。
NetworkX
官网地址:
https://networkx.github.io/
Github地址:
https://github.com/networkx/networkx
简介:
NetworkX为我们提供了网络/图数据结构,我们可以通过简单的接口构建有向图、无向图等,并为点、边等添加属性等信息。另外,NetworkX还提供了最短路径等算法。
NetworkX目前已经成为图神经网络开发中数据组织的标准之一,Github上大量的图神经网络代码都将网络/图数据转换为NetworkX提供的数据结构,在此基础上构建算法。
Scipy稀疏矩阵
官网地址:
https://docs.scipy.org/doc/scipy/reference/sparse.html
简介:
在scipy.sparse包中包含了若干个稀疏矩阵类,例如csr_matrix、coo_matrix等。可以将scipy.sparse下的稀疏矩阵看成是numpy的扩展,它们已经是Python科学计算中稀疏矩阵标准的流程和配置。
在图神经网络的开发中,数据往往需要先转换为scipy.sparse下的稀疏矩阵对象,然后再将稀疏矩阵转换为TensorFlow/PyTorch中的稀疏Tensor。可以将其看作是真实数据与神经网络输入之间的桥梁。
注意,一般情况下,相对于非稀疏矩阵版本的图神经网络,稀疏矩阵版本的图神经网络能够具处理更大的网络,并具有非常高的效率提升。因此,对大部分图神经网络来说,稀疏矩阵的引入是必须的。
稀疏Tensor
官网地址:
https://www.tensorflow.org/api_docs/python/tf/sparse/SparseTensor
简介:
scipy.sparse虽然提供了稀疏矩阵数据结构,但深度学习框架在计算时,往往需要将numpy等格式的矩阵转换为自己的Tensor等才能进行计算。以TensorFlow为例,我们需要将数据转换为SparseTensor,才能在深度网络中进行稀疏矩阵相关运算。然而稀疏Tensor的运算并不像普通Tensor那么简单,例如TensorFlow中的tf.sparse.sparse_dense_matmul方法可以处理稀疏Tensor与普通Tensor的相乘,但在编写代码时如果弄错了参数的前后顺序,就会出现错误。
-END-
专 · 知
专知,专业可信的人工智能知识分发,让认知协作更快更好!欢迎登录www.zhuanzhi.ai,注册登录专知,获取更多AI知识资料!
欢迎微信扫一扫加入专知人工智能知识星球群,获取最新AI专业干货知识教程视频资料和与专家交流咨询!
请加专知小助手微信(扫一扫如下二维码添加),加入专知人工智能主题群,咨询技术商务合作~
专知《深度学习:算法到实战》课程全部完成!540+位同学在学习,现在报名,限时优惠!网易云课堂人工智能畅销榜首位!
点击“阅读原文”,了解报名专知《深度学习:算法到实战》课程