如何用 PyG 的 GraphGym 运行单个节点分类实验并查看聚合结果?

发布时间:2026/9/13 18:18:49
如何用 PyG 的 GraphGym 运行单个节点分类实验并查看聚合结果? 如何用 PyG 的 GraphGym 运行单个节点分类实验并查看聚合结果【免费下载链接】pytorch_geometricGraph Neural Network Library for PyTorch项目地址: https://gitcode.com/GitHub_Trending/py/pytorch_geometricPyTorch GeometricPyG自带的 GraphGym 是一个用于设计和评估 GNN 的实验平台一次实验完全由一个*.yaml配置文件描述跑完后会按随机种子自动生成聚合统计。本文的目标很具体——在 GraphGym 中跑完一个节点分类实验内置示例是 Cora 数据集上的 2 层 GCN并读懂它在results/下自动生成的、跨多个随机种子聚合的均值/标准差结果。官方说明见 docs/source/advanced/graphgym.rst下文命令均与文档及仓库内脚本一致。准备安装 GraphGym 依赖并进入工作目录GraphGym 是 PyG 的一部分但需要额外依赖。按官方文档通过安装可选依赖组获取pip install torch-geometric[graphgym]该可选组在 pyproject.toml 中定义为protobuf4.21、pytorch-lightning、yacs。运行必须发生在 pytorch_geometric 源码树的graphgym/目录下文档原文即要求 clone 源码后cd进该目录。原因是 graphgym/main.py 会导入同级的custom_graphgym目录注册自定义模块以及torch_geometric.graphgym包直接对 pip 安装环境运行是找不到这些相对导入的。如果你的机器没有 GPU文档给出的是 CPU 后端选项在*.yaml配置文件中加一行accelerator: cpu即可。配置文件configs/pyg/example_node.yaml 的关键项默认实验的完整配置在 graphgym/configs/pyg/example_node.yaml。与本次任务直接相关的项如下配置项值作用out_dirresults实验结果根目录相对graphgym/dataset.format/dataset.namePyG/Cora使用 PyG 内置数据集加载数据集为 CoraPlanetoiddataset.task/dataset.task_typenode/classification节点级分类任务train.batch_size/train.sampler128/full_batch训练批次与采样方式gnn.layers_mp/gnn.layer_type/gnn.dim_inner2/gcnconv/162 层 GCN 卷积、内维 16optim.optimizer/optim.base_lr/optim.max_epochadam/0.01/200优化器与最长训练轮数文档对这一默认实验的描述是Planetoid 数据集上的节点分类采用随机 80/20 的 train/validation 划分。yaml 里没有写出的配置项会由torch_geometric.graphgym.set_cfg中的默认值补齐各配置项的具体含义文档指向该函数。运行单个节点分类实验主路径命令来自文档 Run a single experiment 一节也是 graphgym/run_single.sh 的第一行cd pytorch_geometric/graphgym python main.py --cfg configs/pyg/example_node.yaml --repeat 3--cfg指定配置文件路径--repeat 3表示用 3 个不同随机种子各跑一遍文档原文You can specify the number of different random seeds to repeat via--repeat。为什么不直接用run_single.sh该脚本除了节点分类还会顺序执行example_link.yaml链接预测和example_graph.yaml图分类两个独立实验且没有参数可以只挑其中一个。只跑节点分类时应直接执行上面的命令。运行过程中graphgym/main.py 对每个种子会把cfg.seed从 0 开始依次 1 并设置全局随机种子、自动选择设备、打印模型结构和完整配置、打印Num parameters: ...然后开始训练。看到每个种子的训练日志滚动说明实验在正常推进。查看结果与聚合结果实验结束后所有--repeat个种子跑完graphgym/main.py 会自动调用agg_runs实现见 torch_geometric/graphgym/utils/agg_runs.py做跨种子聚合不需要额外命令。结果写入results/example_node/ ├── 1/ 2/ 3/ # 每个种子一个子目录种子号从 0 起每次 1默认即 1、2、3 │ ├── train/stats.json # 该种子逐 epoch 的训练指标 │ └── val/stats.json # 该种子逐 epoch 的验证指标 └── agg/ ├── train/ │ ├── stats.json # 逐 epoch 指标跨种子聚合均值 各指标的 *_std 标准差 │ └── best.json └── val/ ├── stats.json └── best.json # 验证指标最高那个 epoch 的结果文档表述为 highest validation accuracy注意目录名的来源输出目录由 yaml 的out_dir拼接yaml 文件名去掉扩展名得到见 torch_geometric/graphgym/config.py 的set_out_dir所以这里是results/example_node/官方文档中把它写作results/pyg/example_node/以实际生成的目录名为准。验证方式——运行结束后执行ls results/example_node cat results/example_node/agg/val/best.jsonbest.json中应能看到accuracy、loss等指标以及对应的*_std字段数值会随运行结果不同而变化仓库中的文档示例结果仅作参考不是固定预期。终端上聚合完成时还会打印类似Results aggregated across runs saved in .../agg的日志来自agg_runs的logging.info。已知限制与注意官方文档明确警告GraphGym 与 PyG 的集成仍在演进API 未来可能变化跨版本使用源码时以当前版本的文档和代码为准。重复运行会先清理已有的结果目录set_out_dir在未启用cfg.train.auto_resume时调用makedirs_rm_exist即results/example_node/已存在时会先删除再重建。重跑前如有需要保留的结果请自行先移出。本文只覆盖单个实验。run_batch.sh配合 grid 文件用于批量网格搜索结果聚合为 CSV见同一文档的 Run a batch of experiments 一节属于另一个任务本文不涉及。【免费下载链接】pytorch_geometricGraph Neural Network Library for PyTorch项目地址: https://gitcode.com/GitHub_Trending/py/pytorch_geometric创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考