PyTorch Geometric 图神经网络实战入门:最短安装路径与最小可运行示例

发布时间:2026/9/5 19:15:29
PyTorch Geometric 图神经网络实战入门:最短安装路径与最小可运行示例 PyTorch Geometric 图神经网络实战入门最短安装路径与最小可运行示例【免费下载链接】pytorch_geometricGraph Neural Network Library for PyTorch项目地址: https://gitcode.com/GitHub_Trending/py/pytorch_geometricPyTorch Geometric简称 PyG是构建在 PyTorch 之上的图神经网络库它把节点、边、图这些不规则数据变成普通张量让你用十几行代码就能训练 GCN、GAT 等 GNN 模型。读完本文你会完成从 pip 安装到跑通一个真实数据集Cora 论文引用图分类的完整流程并知道遇到问题时该去仓库哪个目录找答案。为什么你需要 PyG如果你做过图像分类应该知道一张图片就是一个规整的二维张量。但现实世界里大量数据没有这种规整形状社交网络里谁关注谁、分子中原子如何成键、知识图谱中实体如何关联——它们都是图。用普通神经网络直接吃图数据你得自己处理邻居聚合、变长结构这些麻烦事。PyG 把这些脏活全包了内置 100 多个数据集、几十种现成的 GNN 层你只写把哪一层接哪一层剩下交给库。安装与首次验证最短安装路径就一条命令前提是已装好 PyTorchpip install torch_geometric从 PyG 2.3 起核心功能不再依赖额外扩展库装完即可用。装完立刻验证一下跑这段代码import torch from torch_geometric.data import Data x torch.tensor([[1.0], [2.0], [3.0]]) # 3 个节点的特征 edge_index torch.tensor([[0, 1], [1, 2]]) # 0-1-2 一条链 data Data(xx, edge_indexedge_index) print(data)预期效果终端会打印出Data(x[3, 1], edge_index[2, 2])这样的摘要。看到这个输出说明图数据这个核心对象已经在你的环境里跑起来了。最小完整示例三步训练一个 GCN下面这个例子能完整跑起来加载数据、定义模型、训练并评估。它做的是论文分类——Cora 数据集里每篇论文是一个节点两篇论文互相引用就有一条边目标是根据引用关系和论文内容判断每篇论文属于哪个领域机器学习、计算机视觉等 7 类。生活化类比想象你要判断一个新朋友属于哪个圈层最靠谱的方式不是听他自我介绍而是看他跟谁走得近。GCN 干的就是这件事——看邻居。第一步加载数据并定义模型from torch_geometric.datasets import Planetoid from torch_geometric.nn import GCNConv dataset Planetoid(rootdata/Planetoid, nameCora) data dataset[0] class GCN(torch.nn.Module): def __init__(self): super().__init__() self.conv1 GCNConv(dataset.num_features, 16) self.conv2 GCNConv(16, dataset.num_classes) def forward(self, x, edge_index): x self.conv1(x, edge_index).relu() return self.conv2(x, edge_index)第二步写训练循环——你会发现它和训练任何 PyTorch 模型毫无区别import torch.nn.functional as F model GCN() optimizer torch.optim.Adam(model.parameters(), lr0.01) for epoch in range(200): pred model(data.x, data.edge_index) loss F.cross_entropy(pred[data.train_mask], data.y[data.train_mask]) optimizer.zero_grad() loss.backward() optimizer.step()训练时只需要train_mask标出的少量节点作为监督信号验证和测试节点完全留白——这正是半监督节点分类的形态。第三步看产出model.eval() with torch.no_grad(): pred model(data.x, data.edge_index).argmax(dim1) acc int((pred[data.test_mask] data.y[data.test_mask]).sum()) acc / int(data.test_mask.sum()) print(fTest Accuracy: {acc:.4f})跑完 200 轮后测试集准确率通常在 0.80 上下波动这是 GCN 在 Cora 上的标准水平。想要带调参和评估细节的完整版本可以直接读仓库里的 examples/gcn.py它是官方 Quick Tour 同款写法的加强版。核心概念拆解看懂上面代码后只需要再记住下面这些抽象PyG 的 API 就能自己读了概念是什么为什么重要Data单个图数据的容器核心字段是x节点特征形状[num_nodes, num_features]和edge_index边列表形状[2, num_edges]几乎所有 API 的输入输出都是它Dataset数据集基类dataset[0]返回一个Data内置数据集全部遵循此接口*Conv层如GCNConv、GATConv输入(x, edge_index)输出新的x所有 GNN 模型的积木块transform数据预处理函数如归一化特征在 Dataset 上挂一个钩子加载时自动应用loader如NeighborLoader对大图按邻居采样出小批量百万节点图装不进显存时用它两点补充说明edge_index用的是 COO 坐标格式第一行是边的起点编号第二行是终点编号第i列就描述第i条边。它不保存任何邻接矩阵所以天然稀疏、省内存。消息传递是 PyG 的统一抽象。每一层 Conv 做的事情都是每个节点收集邻居信息、聚合、更新自己的特征。读懂 torch_geometric/nn/conv/ 目录下任意一个*Conv.py就能理解对应论文的模型结构。真实场景走通Cora 上的完整闭环上一节的代码其实已经把完整闭环走了一遍这里补充从输入到输出的数据流视角帮你建立全局印象输入Planetoid(rootdata/Planetoid, nameCora)首次运行会自动下载数据到该目录之后直接读缓存。Cora 有 2708 篇论文、5429 条引用边、1433 维词袋特征、7 个类别。处理模型两层GCNConv逐节点聚合邻居特征数据集自带的train_mask/val_mask/test_mask三个布尔向量划分出 140 / 500 / 1000 个节点分别用于训练、验证、测试。输出每个节点一个 7 维 logits 向量argmax即预测类别。最终产出就是那个Test Accuracy: 0.8xxx的数字——它意味着模型仅用 140 个带标签节点就看懂了整张引用网络。如果换成你的业务论文领域分类可以对应用户流失预测节点是用户边是社交关系mask 是已知流失/留存的用户。数据结构不变只是x换成了用户特征。避坑与进阶两个新手最高频的坑训练/评估模式不切换。forward里用了F.dropout却没在推理前调model.eval()会导致每次评估结果都不一样。记住训练循环里model.train()评估前model.eval()这个固定搭配上面示例已经这么写了。边方向写反。edge_index[0]是起点、edge_index[1]是终点[[0, 1], [1, 0]]才是无向的 0-1 边而[[0, 1], [0, 1]]是两条同向边。节点分类任务对方向通常不敏感但做链接预测时方向就是答案本身写反会直接归零。进阶方向按难度排列大图采样图大到显存装不下时用NeighborLoader按层采样邻居思路见 examples/reddit.py。异构图节点和边分多种类型比如作者-论文-期刊示例集中在 examples/hetero/。点云与 3D 形状PyG 不只处理 2D 图PointNet、DGCNN 等点云模型都有现成实现流程大致是采样分组 → 局部网络 → 上采样可解释性想知道模型为什么给出某个预测examples/explain/ 里的 GNNExplainer 系列脚本可以直接照抄。资源入口torch_geometric/nn/所有模型层与模型的源码目录读代码学模型结构最快examples/按任务分类的示例脚本基本改个数据集就能跑torch_geometric/datasets/内置数据集清单每个文件就是一个数据集的加载器test/全量单元测试想看某个 API 的标准用法时对应的 test 文件就是最好的说明书装好、跑通 Cora、看懂Data和edge_index你就已经站在了 PyG 的入门线上。剩下的事情只有一个挑一个你自己的图数据把它塞进Data对象里。【免费下载链接】pytorch_geometricGraph Neural Network Library for PyTorch项目地址: https://gitcode.com/GitHub_Trending/py/pytorch_geometric创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考