GraphSAGE模型实验记录【Cora、Citeseer、Pubmed】

这篇博客详细记录了使用GraphSAGE模型在Cora、Citeseer、Pubmed数据集上的实验过程,包括数据集划分、代码实现、实验环境、超参数设置及实验结果分析。博主通过调整数据集划分和使用PyG库,对比了不同层数SageGCN的效果,并探讨了数据集孤立节点问题对模型的影响。
摘要由CSDN通过智能技术生成

1、准备工作

数据集

数据集 #图 #节点 #边 #特征 #标签(y)
Cora 1 2708 5429 1433 7
Citeseer 1 3327 4732 3703 6
Pubmed 1 19717 44338 500 3

数据集划分方式:https://github.com/kimiyoung/planetoid (Zhilin Yang, William W. Cohen, Ruslan Salakhutdinov, Revisiting Semi-Supervised Learning with Graph Embeddings, ICML 2016)

数据集划分(数量) 训练集 验证集 测试集
Cora 140 500 1000
Citeseer 120 500 1015
Pubmed 60 500 1000

代码

参考:https://github.com/FighterLYL/GraphNeuralNetwork/tree/master/chapter7
使用监督学习的方法,增加了Citeseer和Pubmed数据集,并对其代码进行了重构和调试,排除了一些小bug,增加了详细的注释。
完善后的代码:https://github.com/ytchx1999/GraphSAGE-Cora-Citeseer-Pubmed

实验环境

其实本地用mac的CPU跑也蛮快的。。
但是还是用GPU(最开始是一块2080Ti,后面用的Tesla T4)会更快一点,毕竟time is money!

在这里插入图片描述
在这里插入图片描述

2、超参数

BATCH_SIZE = 16  # 批处理大小
EPOCHS = 10
NUM_BATCH_PER_EPOCH = 20  # 每个epoch循环的批次数
LEARNING_RATE =0.10.01# 学习率,每5个epoch x0.1

3、实验结果

在这里插入图片描述

2层SageGCN层

GraphSage(
  in_features=【输入的特征维度】, num_neighbors_list=[10, 10]
  (
这段代码是一个数据加载函数`load_data`,根据传入的参数`args`中的`dataset`值来加载不同的数据集。 下面是对代码的解释: - `def load_data(args):`:这是一个方法定义,接受一个参数`args`,表示加载数据需要的配置参数。 - `if args.dataset == "cora":`:如果`args.dataset`等于"cora",则执行下面的代码块。 - `return citegrh.load_cora()`:调用`citegrh`模块中的`load_cora`函数,加载Cora数据集,并将加载的数据返回。 - `elif args.dataset == "citeseer":`:如果`args.dataset`等于"citeseer",则执行下面的代码块。 - `return citegrh.load_citeseer()`:调用`citegrh`模块中的`load_citeseer`函数,加载Citeseer数据集,并将加载的数据返回。 - `elif args.dataset == "pubmed":`:如果`args.dataset`等于"pubmed",则执行下面的代码块。 - `return citegrh.load_pubmed()`:调用`citegrh`模块中的`load_pubmed`函数,加载Pubmed数据集,并将加载的数据返回。 - `elif args.dataset is not None and args.dataset.startswith("reddit"):` - 如果`args.dataset`不为`None`且以"reddit"开头,则执行下面的代码块。 - `return RedditDataset(self_loop=("self-loop" in args.dataset))`:创建一个Reddit数据集对象,并根据参数`args.dataset`中是否包含"self-loop"来决定是否添加自环边。 - `else:`:如果以上条件都不满足,则执行下面的代码块。 - `raise ValueError("Unknown dataset: {}".format(args.dataset))`:抛出一个值错误异常,指示未知的数据集。 通过这段代码,根据传入的参数`args.dataset`的值,选择加载对应的数据集,并将加载的数据返回。如果`args.dataset`的值不在预定义的数据集中,则会抛出一个异常。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值