广告位联系
返回顶部
分享到

图卷积神经网络分类的pytorch实现

vbs 来源:互联网 作者:佚名 发布时间:2023-02-20 22:34:37 人浏览
摘要

图神经网络(GNN)目前的主流实现方式就是节点之间的信息汇聚,也就是类似于卷积网络的邻域加权和,比如图卷积网络(GCN)、图注意力网络(GAT)等。下面根据GCN的实现原理使用

  图神经网络(GNN)目前的主流实现方式就是节点之间的信息汇聚,也就是类似于卷积网络的邻域加权和,比如图卷积网络(GCN)、图注意力网络(GAT)等。下面根据GCN的实现原理使用Pytorch张量,和调用torch_geometric包,分别对Cora数据集进行节点分类实验。

  Cora是关于科学文献之间引用关系的图结构数据集。数据集包含一个图,图中包括2708篇文献(节点)和10556个引用关系(边)。其中每个节点都有一个1433维的特征向量,即文献内容的嵌入向量。文献被分为七个类别:计算机科学、物理学等。

GCN计算流程

  对于某个GCN层,假设输入图的节点特征为$Xin R^{|V| imes F_{in}}$,边索引表示为序号数组$Eiin R^{2 imes |E|}$,GCN层输出$Yin R^{|V| imes F_{out}}$。计算流程如下:

  0、根据$Ei$获得邻接矩阵$A_0in R^{|V| imes |V|}$。

  1、为了将节点自身信息汇聚进去,每个节点添加指向自己的边,即 $A=A_0+I$,其中$I$为单位矩阵。

  2、计算度(出或入)矩阵 $D$,其中 $D_{ii}=sum_j A_{ij}$ 表示第 $i$ 个节点的度数。$D$为对角阵。

  3、计算对称归一化矩阵 $hat{D}$,其中 $hat{D}_{ii}=1/sqrt{D_{ii}}$。

  4、构建对称归一化邻接矩阵 $ ilde{A}$,其中 $ ilde{A}= hat{D} A hat{D}$。

  5、计算节点特征向量的线性变换,即 $Y = ilde{A} X W$,其中 $X$ 表示输入的节点特征向量,$Win R^{F_{in} imes F_{out}}$ 为GCN层中待训练的权重矩阵。

  即:

$Y=D^{-0.5}(A_0+I)D^{-0.5}XW$

  在torch_geometric包中,normalize参数控制是否使用度矩阵$D$归一化;cached控制是否缓存$D$,如果每次输入都是相同结构的图,则可以设置为True,即所谓转导学习(transductive learning)。另外,可以看到GCN的实现只考虑了节点的特征,没有考虑边的特征,仅仅通过聚合引入边的连接信息。

GCN实验

调包实现

  Cora的图数据存放在torch_geometric的Data类中。Data主要包含节点特征$Xin R^{|V| imes F_v}$、边索引$Eiin R^{2 imes |E|}$、边特征$Eain R^{|E| imes F_e}$等变量。首先导出Cora数据:

from torch_geometric.datasets import Planetoid

cora = Planetoid(root='./data', name='Cora')[0]
print(cora)

版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。

您可能感兴趣的文章 :

原文链接 :
相关文章
  • 图卷积神经网络分类的pytorch实现
    图神经网络(GNN)目前的主流实现方式就是节点之间的信息汇聚,也就是类似于卷积网络的邻域加权和,比如图卷积网络(GCN)、图注意力
  • VBScript动态Array的实现代码
    记录一个小方法,关于 VBScript 中,动态 Array 的实现,也适用于 VBA, 在很久以前,写 VBA 的时候,就觉得使用 Array 和不方便,因为大小固定
  • VBS遍历Excel工作表的实现代码
    核心代码 ******************************************拖拽文件,获取文件路径******************************************If wscript.Arguments.count=0 then msgbox 拖拽文件
  • 拖拽文件显示文件路径的vbs代码
    面两段原理都是一样的,大家可以看下 代码一 If wscript.Arguments.count=0 then msgbox 拖拽文件到本vbs文件,0,提示End if for jb=0 to wscript.Arguments.count
  • VBS进程判断的代码
    vbs核心代码 Option ExplicitDim objWMIService,colProcessList,strComputerstrComputer = .Set objWMIService = GetObject(winmgmts:{impersonationLevel=impersonate}!\\ strComputer \roo
  • 运行vbs脚本报错无效字符、中文乱码的解决方法

    运行vbs脚本报错无效字符、中文乱码的解决方法
    代码没有问题,总是报这样的错误。 测试代码 msgbox 脚本之家 很简单的代码,但如果编码不对问题就很多 中文乱码问题 运行图 因为使用了
  • VBS怎么获取指定目录下的文件列表
    VBS肿么获取某目录下的文件列表 dim FileName,fs,foldernamefoldername = InputBox(请输入想要在哪个文件夹查找, VBS查找文件)If foldername = Thenwscript.quitE
  • 抖音vbs表白代码 抖音vbscript表白代码使用教程

    抖音vbs表白代码 抖音vbscript表白代码使用教程
    今天小编给大家分享抖音vbs表白代码 抖音vbscript表白代码使用教程。 先上个效果图 步骤一: 在电脑上新建一个txt文件。 步骤二: 打开tx
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计