图神经网络
文章平均质量分 70
Icoding_F2014
相信代码可以变化世界
展开
-
networkx画弯曲的边
networkx里面自绘的边都是直的,当多个节点处于同一条直线还有连边的时候就特别难看。如果能否让networkx画弯曲的边,那么这种情况就可以好办的多了。思路为:绘制节点,获取节点的pos坐标。在存在边的两个节点之间,使用贝塞尔插值生成两个节点之间曲线的节点坐标。使用LineCollection绘制线即可。下面为整理的代码:直线连边版:贝塞尔曲线连边版:...原创 2021-09-05 20:58:16 · 1904 阅读 · 0 评论 -
GraphConvolution的实现说明
GCN是特别常见的图神经网络模型,这个模型在各种图神经网络的开源库都有实现,例如DGL,PYG。但是开源库里面的实现,基本上是空域的图卷积操作,意思是说DGL和PYG里面的邻接矩阵 AAA 都必须是硬定义的。这里的良性定义是指:Aij∈{0,1}A_{ij}\in\{0,1\}Aij∈{0,1},每个元素非0即1,必须能够确定性的知道是否存在节点 iii 和节点 jjj直接的连边。如果我们想要跑soft 的邻接矩阵 Aij∈[0,1]A_{ij}\in[0,1]Aij∈[0,1],这个矩阵里面的元素是连原创 2021-04-22 17:51:49 · 2751 阅读 · 1 评论 -
Pytorch-geometric 图神经网络库 教程 (一)
前言之前我是一直使用DGL这个图神经网络库做图神经网络方面的研究的,DGL也是一个特别漂亮的图神经网络开源库。但是DGL有如下两个缺点:DGL适合跑那种邻接矩阵是良性定义的graph。良性定义是指Aij∈{0,1}A_{ij}\in\{0,1\}Aij∈{0,1},邻居矩阵的每个元素不能是连续的。DGL的库更新的慢。此外,DGL主要是基于传统的图计算那套方法来实现的,里面有mailbox之类的,并不是用数学公式来直接表达。Pytorch-geometric则是可以解决如上的两个缺点。因此,原创 2021-04-05 21:01:00 · 3296 阅读 · 1 评论 -
pytorch 踩坑集
错误1: 多LossRuntimeError: Trying to backward through the graph a second time, but the buffers have already been freed. Specify retain_graph=True when calling backward the first time.原因:一次feed,多次backward()了。方法:把各个LOSS加权求和起来,然后再backward().原来有问题的代码:原创 2020-11-13 19:27:15 · 429 阅读 · 0 评论 -
图卷积网络原理(二)【图信号与图的拉普拉斯矩阵】
矩阵乘法的三种视角后续图卷积网络的原理讲解主要以矩阵乘法的显示展开,这里介绍矩阵乘法的几种不同的视角,这些视角有助于我们理解图卷积网络的逻辑过程。对于矩阵 A∈Rm×nA\in R^{m\times n}A∈Rm×n 和 矩阵 B∈Rn×pB \in R^{n\times p}B∈Rn×p,它们的乘积 C∈Rm×pC \in R^{m \times p}C∈Rm×p,可以由如下三种视角计算得到。內积视角:这是我们本科阶段就接触到的视角。矩阵CCC 的第i 行第 j 列是由矩阵 AAA 的第iii 和原创 2020-11-02 00:51:47 · 1301 阅读 · 2 评论 -
图卷积网络原理(一)【引入图神经网络的动机】
前言接下来,本人将编写系列教程介绍图卷积网络的动机和基本原理。在我看来,图神经网络只是一个建模工具,因此我更多是从使用这个工具的角度来阐述个人的理解!欢迎交流。引入图神经网络的动机对于图数据(分子结构图、交通图等)领域本身去研究图神经网络的是没啥可说的,但是非图数据领域为何又要引入图神经网络呢?动机一:引入样本与样本之间的关联关系我们知道,传统的神经网络的工作过程是逐样本的,也就说:给定一个batch的输入样本 Xm×nX_{m\times n }Xm×n ,其中mmm 表示batch的大小,原创 2020-10-29 08:53:34 · 598 阅读 · 0 评论 -
DGL 的GATConv报错:Expect number of features to match number of nodes (len(u)). Got 2397 and 799 instead
使用DGL的GATConv层,居然意外的出现如下错误:dgl._ffi.base.DGLError: Expect number of features to match number of nodes (len(u)). Got 2397 and 799 instead.注意到799是节点数,而2390刚好是799的3倍,这个3恰好又是num_heads的数值。因此GATConv的返回值的现状为:(N,H,M)(N,H,M)(N,H,M) ,其中NNN 是节点个数,HHH 是特征长度,而 MMM是原创 2020-07-02 00:17:49 · 5082 阅读 · 0 评论 -
基于DGL库图神经网络教程(1)——基本的建图操作
最近接触了图神经网络,感觉这个玩意可以提供多粒度视角。在对研究对象进行抽象后,既可以对节点进行分类,也可以对边进行分类,还可以对图整体进行分类。 图神经网络这种结构就提供一种多粒度描述特定对象的能力。想想还是蛮不错的啊。所以就搞搞图神经网络。目前来看图神经网络的理论学习路线有:图论基本知识。这个很熟,不用学。线性代数,尤其是傅里叶变换的矩阵形式。这个只要回去看看书就行,我看了图卷积网络的理论基础,其实就是傅里叶变换矩阵形式的应用,这个在矩阵分析课已经很常见了,不算什么新知识点。但是要接触图神经网络原创 2020-06-28 07:10:53 · 8018 阅读 · 2 评论