尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

PyTorch Geometric 数据集快速上手:从下载 Cora 到跑通第一次训练

PyTorch Geometric 数据集快速上手:从下载 Cora 到跑通第一次训练 PyTorch Geometric 数据集快速上手从下载 Cora 到跑通第一次训练【免费下载链接】pytorch_geometricGraph Neural Network Library for PyTorch项目地址: https://gitcode.com/GitHub_Trending/py/pytorch_geometricPyTorch GeometricPyG把上百种图数据集封装成两行 API但新手第一次导入时下载卡住、路径报错、缺依赖是三大常客。本文就干一件事带你把 Cora 数据集从下载到跑通第一次训练全程不绕路。两行代码启动加载、下载、缓存一次讲清核心 API 就是Planetoid这一个类Cora、CiteSeer、PubMed 都走它from torch_geometric.datasets import Planetoid # root 是本地缓存目录name 指定具体数据集 dataset Planetoid(rootdata/Planetoid, nameCora) data dataset[0] # 取出唯一的图对象 print(dataset.num_features) # 1433节点特征维度 print(dataset.num_classes) # 7 个类别 print(len(data)) # 2708 个节点第一次运行自动下载加处理构造函数会创建data/Planetoid/raw/把官方数据包拉下来解压解析后生成processed/里的 .pt 文件之后的运行全读这个第二次运行不再碰网络直接命中本地缓存data 对象里有什么data.x节点特征矩阵Cora 是 2708×1433 的词袋data.edge_index边列表形状 2×E 的长整型张量data.y加train_mask/val_mask/test_mask标签和三个互不重叠的划分掩码跑完这步你会发现数据集导入其实只发生一次后面全是本地 IO。真正麻烦在后面——mask 怎么用在训练里以及网络环境不好时下载怎么救。接上 GCN损失降下来的第一次训练Cora 是单图数据集dataset[0]拿到的整张图直接喂模型不需要 DataLoader 分批。先用单层 GCNConv 把链路打通import torch.nn.functional as F from torch_geometric.nn import GCNConv model GCNConv(dataset.num_features, dataset.num_classes) # 单层先跑通 opt torch.optim.Adam(model.parameters(), lr0.01) for epoch in range(100): opt.zero_grad() out model(data.x, data.edge_index) # 一次消息传递 loss F.cross_entropy(out[data.train_mask], data.y[data.train_mask]) loss.backward(); opt.step() print((out.argmax(-1)[data.val_mask] data.y[data.val_mask]).float().mean())mask 是唯一需要记住的东西训练只用train_mask算损失Cora 里约 140 个节点验证、测试各看各的 mask三者互不重叠想复现论文精度换两层 GCN 加 dropout参考仓库里的examples/gcn.py特征先归一化官方示例都带transformT.NormalizeFeatures()每列特征除以自己的 L2 范数不做的后果是损失震荡、收敛慢词袋特征尤其明显加在构造函数里即可Planetoid(root, Cora, transformT.NormalizeFeatures())训练一百个 epochval 准确率在 0.55 上下波动属正常单层模型的合理水平。到这里下载→导入→训练的闭环已经完整了。三个高频卡点逐个拆下载失败、路径报错、缺依赖按出现频率排个序。卡点一连不上数据源ConnectionError: HTTPSConnectionPool ... Connection refused说白了就是网络够不到官方下载地址。设置代理后重试os.environ[https_proxy] http://proxy:port手动下载压缩包解压文件放进data/Planetoid/raw/重跑会自动跳过下载公司内网环境优先走第二条稳定得多卡点二目录不存在或没写权限FileNotFoundError: [Errno 2] No such file or directory: data/Planetoid说白了就是 root 路径相对的是脚本运行时的工作目录不是你写代码时所在目录。用绝对路径root/home/user/pyg_data/Planetoid先手动mkdir -p建目录确认当前用户可写打印os.getcwd()核对脚本真实运行位置卡点三稀疏扩展依赖缺失ModuleNotFoundError: No module named torch_sparse说白了就是 torch-scatter / torch-sparse 没装或装的版本和当前 PyTorch、CUDA 对不上。先升级 PyG 到最新版新版核心链路已不强依赖这两个包确实需要时按官方文档匹配 PyTorch 与 CUDA 版本再编译安装报错里提到 ABI 的话说明 wheel 是别的 PyTorch 版本编的重装即可不满足于官方数据集把自定义图喂进 Dataset自己的数据比如一张 CSV 边表不用改 PyG 任何源码继承Dataset填两个方法就行骨架比想象中短from torch_geometric.data import Dataset class MyDataset(Dataset): def __init__(self, root, transformNone): super().__init__(root, transform) # 建目录、管缓存全在基类 property def raw_file_names(self): # 文件齐全就自动跳过下载 return [edges.csv] def process(self): # 把 raw 解析成 Data 存进 processed/ ...raw_file_names 是跳过逻辑的开关基类检查raw/里这些文件是否都在在就不调download()手动把数据丢进raw/后重跑就是手动下载的标准姿势get 方法决定怎么取get(idx)返回第 idx 个图len()告诉 PyG 一共有几个单图数据集返回 1 个 Data 即可多图表数据每个 idx 读一行大图走磁盘默认 InMemoryDataset 会把 processed 全读进内存百万节点级别换OnDiskDataset按索引动态加载样本完整定义见torch_geometric/data/dataset.py骨架和本文代码完全一致下一步先用 Planetoid 跑通 Cora 并盯住 val 准确率曲线再照 MyDataset 骨架把你自己的 CSV 边表喂进去——骨架里真正要你自己写的只有get一个方法。延伸阅读自定义数据集教程docs/source/notes/create_dataset.rstCSV 数据读入示例docs/source/notes/load_csv.rst预定义数据集完整列表torch_geometric/datasets/__init__.py官方 GCN 训练脚本examples/gcn.py【免费下载链接】pytorch_geometricGraph Neural Network Library for PyTorch项目地址: https://gitcode.com/GitHub_Trending/py/pytorch_geometric创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表