PyG搭建R-GCN实现节点分类
来源:http://www.tudoupe.com时间:2022-07-29
目录
- 前言
- 数据处理
- 模型搭建
- 1. 前向传播
- 2. 反向传播
- 3. 训练
- 4. 测试
- 实验结果
- 完整代码
前言
R-GCN的原理见ESWC 2018 | R-GCN:基于图形体积网络的关系数据建模。
数据处理
导入数据:
输出如下:
可以发现,DBLP数据集中有作者(author)、论文(paper)、术语(term)以及会议(conference)四种类型的节点。DBLP包含14,328份论文,作者4057人, 20个会议(conference),共7723人。作者分为四个领域: 数据库 、 数据挖掘 、 机器学习和信息检索.
任务:对author
节点分为四个类别。
由于conference
节点没有功能,所以您需要先设置功能:
所有会议节点的特性都是随机初始化.
获取一些有用的资料:
模型搭建
首先导入包:
模型参数:
- In_channels:输入通道,如节点分类中的每个节点的特性数,通常设置为-1。
- out_channels:输出通道,GCNConv最后层的输出通道是节点类数(节点分类)。
- 縣名「Num_relations」(PDF)。
- num_bases:如果一个基函数被用来分解一个规范化,它指示要使用的基数。
- num_blocks:如果块为角方形,使用数量的块。
- 梅尔认为的那样
mean
。
于是模型搭建如下:
输出一下模型:
1. 前向传播
如欲查看RGCNConv的输入和输出要求,请参阅官方文件:
可以发现需要输入RGCNConv的节点特性x
、边索引edge_index
以及边类型edge_type
。
我们在初始化功能后导出DBLP数据集:
可以发现DBLP没有上述三个值,因此我们首先需要将其转换为一个均匀图:
在转换成均匀图后,虽然存在edge_index
和edge_type
但是并不是所有的节点x
,这是因为在将异质图转为同质图的过程中,只有所有节点的特征维度相同时才能将所有节点的特征进行合并。因此,我们首先需要将所有节点的特征转换到同一维度(这里以128为例):
转换数据中所有类型节点的特征维度为128,然后转换成一个均匀图:
此时,我们就可以将homogeneous_data输入到RGCNConv中:
输出的x
包含了所有的节点信息,我们只需要先取出4057,这是author
节点的特征:
2. 反向传播
在训练中,我们首先使用向前传播来计算输出:
f
也就是说,最终得到的每个节点都有四个概率值,但在实际训练中我们只需要计算训练集合的损失,所以损失函数如下:
然后计算梯度并逆转更新!
3. 训练
返回在训练期间在验证集合上完成的最佳模型:
4. 测试
实验结果
数据集使用DBLP网络,运行100轮,分类精度为93.7%:
完整代码
代码地址: GNNs-for-Node-Classification 。原创不易,下载时请给个follow和star!感谢!!
相关新闻
- 2022-08-04 WPF的由来
- 2022-08-04 Win11勒索软件防护怎么打开?Win11安
- 2022-08-04 Windows系统jdk的配置
- 2022-08-04 Windows10 OneNote怎么重新登录?如何重
- 2022-08-04 超好用的 Windows 效率工具推荐
- 2022-08-04 Windows如何在CMD或PowerShell中配置代理
- 2022-08-04 powershell和cmd对比
- 2022-08-04 【QT】Windows下QT下载安装
- 2022-08-04 windows下 C++ 实现类属性的get和set方
- 2022-08-04 Win11快速助手在哪里?Win11打开快速
|
|
|
|
|
|
|
|
|
|