加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

图卷积网络到底怎么做,这是一份极简的Numpy实现

发布时间:2019-02-23 09:18:07 所属栏目:建站 来源:机器之心编译
导读:因为图布局很是伟大且信息量很大,因此对付图的呆板进修是一项难题的使命。本文先容了怎样行使图卷积收集(GCN)对图举办深度进修,GCN 是一种可直接浸染于图并操作其布局信息的强盛神经收集。 本文将先容 GCN,并行使代码示例声名信息是怎样通过 GCN 的潜匿

你也许已经发明白个中的题目:

  • 节点的聚合表征不包括它本身的特性!该表征是相邻节点的特性聚合,因此只有具有自环(self-loop)的节点才会在该聚合中包括本身的特性 [1]。
  • 度大的节点在其特性表征中将具有较大的值,度小的节点将具有较小的值。这也许会导致梯度消散或梯度爆炸 [1, 2],也会影响随机梯度降落算法(随机梯度降落算法凡是被用于实习这类收集,且对每个输入特性的局限(或值的范畴)都很敏感)。

接下来,本文将别离对这些题目睁开接头。

1. 增进自环

为了办理第一个题目,我们可以直接为每个节点添加一个自环 [1, 2]。详细而言,这可以通过在应用撒播法则之前将连接矩阵 A 与单元矩阵 I 相加来实现。

  1. In [4]: I = np.matrix(np.eye(A.shape[0])) 
  2.         I 
  3. Out[4]: matrix([ 
  4.             [1., 0., 0., 0.], 
  5.             [0., 1., 0., 0.], 
  6.             [0., 0., 1., 0.], 
  7.             [0., 0., 0., 1.] 
  8.         ]) 
  9. In [8]: AA_hat = A + I 
  10.         A_hat * X 
  11. Out[8]: matrix([ 
  12.             [ 1., -1.], 
  13.             [ 6., -6.], 
  14.             [ 3., -3.], 
  15.             [ 5., -5.]]) 

此刻,因为每个节点都是本身的邻人,每个节点在对相邻节点的特性求和进程中也会席卷本身的特性!

2. 对特性表征举办归一化处理赏罚

通过将连接矩阵 A 与度矩阵 D 的逆相乘,对其举办调动,从而通过节点的度对特性表征举办归一化。因此,我们简化后的撒播法则如下:

  1. f(X, A) = D⁻¹AX 

让我们看看产生了什么。我们起首计较出节点的度矩阵。

  1. In [9]: D = np.array(np.sum(A, axis=0))[0] 
  2.         D = np.matrix(np.diag(D)) 
  3.         D 
  4. Out[9]: matrix([ 
  5.             [1., 0., 0., 0.], 
  6.             [0., 2., 0., 0.], 
  7.             [0., 0., 2., 0.], 
  8.             [0., 0., 0., 1.] 
  9.         ]) 

在应用撒播法则之前,不妨看看我们对连接矩阵举办调动后产生了什么。

调动之前

  1. A = np.matrix([ 
  2.     [0, 1, 0, 0], 
  3.     [0, 0, 1, 1],  
  4.     [0, 1, 0, 0], 
  5.     [1, 0, 1, 0]], 
  6.     dtype=float 

调动之后

  1. In [10]: D**-1 * A 
  2. Out[10]: matrix([ 
  3.              [0. , 1. , 0. , 0. ], 
  4.              [0. , 0. , 0.5, 0.5], 
  5.              [0. , 0.5, 0. , 0. ], 
  6.              [0.5, 0. , 0.5, 0. ] 
  7. ]) 

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读