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

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

发布时间:2019-02-26 06:45:21 所属栏目:建站 来源:机器之心编译
导读:由于图结构非常复杂且信息量很大,因此对于图的机器学习是一项艰巨的任务。本文介绍了如何使用图卷积网络(GCN)对图进行深度学习,GCN 是一种可直接作用于图并利用其结构信息的强大神经网络。 本文将介绍 GCN,并使用代码示例说明信息是如何通过 GCN 的隐藏

接下来,我们将随机初始化权重。

  1. W_1 = np.random.normal( 
  2.     loc=0, scale=1, size=(zkc.number_of_nodes(), 4)) 
  3. W_2 = np.random.normal( 
  4.     loc=0, size=(W_1.shape[1], 2)) 

接着,我们会堆叠 GCN 层。这里,我们只使用单位矩阵作为特征表征,即每个节点被表示为一个 one-hot 编码的类别变量。

  1. def gcn_layer(A_hat, D_hat, X, W): 
  2.     return relu(D_hat**-1 * A_hat * X * W) 
  3. H_1 = gcn_layer(A_hat, D_hat, I, W_1) 
  4. H_2 = gcn_layer(A_hat, D_hat, H_1, W_2) 
  5. output = H_2 

我们进一步抽取出特征表征。

  1. feature_representations = { 
  2.     node: np.array(output)[node]  
  3.     for node in zkc.nodes()} 

你看,这样的特征表征可以很好地将 Zachary 空手道俱乐部的两个社区划分开来。至此,我们甚至都没有开始训练模型!

Zachary 空手道俱乐部图网络中节点的特征表征

我们应该注意到,在该示例中由于 ReLU 函数的作用,在 x 轴或 y 轴上随机初始化的权重很可能为 0,因此需要反复进行几次随机初始化才能生成上面的图。

结语

本文中对图卷积网络进行了高屋建瓴的介绍,并说明了 GCN 中每一层节点的特征表征是如何基于其相邻节点的聚合构建的。读者可以从中了解到如何使用 numpy 构建这些网络,以及它们的强大:即使是随机初始化的 GCN 也可以将 Zachary 空手道俱乐部网络中的社区分离开来。

参考文献

  • Blog post on graph convolutional networks by Thomas Kipf.
  • Paper called Semi-Supervised Classification with Graph Convolutional Networks by Thomas Kipf and Max Welling.

原文链接:

https://towardsdatascience.com/how-to-do-deep-learning-on-graphs-with-graph-convolutional-networks-7d2250723780

【本文是51CTO专栏机构“机器之心”的原创译文,微信公众号“机器之心( id: almosthuman2014)”】

戳这里,看该作者更多好文

【编辑推荐】

  1. 神经网络的奥秘之优化器的妙用
  2. 嵌入式中的人工神经网络
  3. 不使用先验知识与复杂训练策略,从头训练二值神经网络!
  4. 手把手 | 神经网络的菜鸟入门秘籍
  5. 这种有序神经元,像你熟知的循环神经网络吗?
【责任编辑:赵宁宁 TEL:(010)68476606】
点赞 0

(编辑:厦门网)

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

热点阅读