超大图cluster gcn

Cluster-GCN是一种解决大型图数据训练难题的算法,通过节点聚类将大图划分为小块进行训练,提高内存效率和训练速度。在每个步骤中,算法选择部分簇构成子图进行训练,避免了全图操作,同时保持了簇间边的连接。这种方法使得在深度GCN模型中也能有效训练,如在Amazon2M数据集上,3层GCN模型的内存使用比VRGCN减少5倍。Cluster-GCN在深层网络中的训练速度优于VR-GCN,且能处理大尺寸的embedding-size,展示出深度GCN在准确性上的潜力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Cluster-GCN方法简单概括
为了解决普通训练方法无法训练超大图的问题,Cluster-GCN论文提出:

利用图节点聚类算法将一个图的节点划分为 [公式] 个簇,每一次选择几个簇的节点和这些节点对应的边构成一个子图,然后对子图做训练。
由于是利用图节点聚类算法将节点划分为多个簇,所以簇内边的数量要比簇间边的数量多得多,所以可以提高表征利用率,并提高图神经网络的训练效率。
每一次随机选择多个簇来组成一个batch,这样不会丢失簇间的边,同时也不会有batch内类别分布偏差过大的问题。
基于小图进行训练,不会消耗很多内存空间,于是我们可以训练更深的神经网络,进而可以达到更高的精度。
PyG为Cluster-GCN提出的训练方式和神经网络的构建提供了良好的支持。我们无需在意图节点是如何被划分成多个簇的,PyG提供的接口允许我们像训练普通神经网络一样在超大图上训练图神经网络。
from torch_geometric.data import ClusterData, ClusterLoader, NeighborSampler

cluster_data = ClusterData(data, num_parts=1500, recursive=False, save_dir=dataset.processed_dir)
train_loader = ClusterLoader(cluster_data, batch_size=20, shuffle=True, num_workers=12)图节点被聚类划分成多个簇,此数据加载器返回的一个batch由多个簇组成。
subgraph_loader = NeighborSampler(data.edge_index, sizes=[-1], batch_size=1024, shuffle=False, num_workers=12)用此数据加载器不对图节点聚类,计算一个batch中的节点的表征需要计算该batch中的所有节点的距离从 [公式] 到 [公式] 的邻居节点。
图节点如何表征?
其实我们可以将上述学习分成三个部分:

变换(transform):对当前的节点特征进行变换学习,这里就

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值