pytorch-geometric
1
总安装量
1
周安装量
#47078
全站排名
安装命令
npx skills add https://github.com/cuba6112/skillfactory --skill pytorch-geometric
Agent 安装分布
mcpjam
1
claude-code
1
junie
1
windsurf
1
zencoder
1
crush
1
Skill 文档
Overview
PyTorch Geometric (PyG) is built on top of PyTorch to simplify the implementation of Graph Neural Networks. It treats graphs as Data objects containing node features and edge indices, and provides a powerful MessagePassing base class for custom layer development.
When to Use
Use PyG for data that is naturally represented as a graph, such as social networks, molecular structures, or point clouds. Use it when you need to perform node classification, edge prediction, or graph-level regression.
Decision Tree
- Do you have a list of small graphs?
- USE:
torch_geometric.loader.DataLoaderto create a single giant disjoint graph.
- USE:
- Do you need to pool node features into a graph-level feature?
- USE:
global_mean_poolorglobal_max_poolusing thebatchvector.
- USE:
- Are you building a custom convolution?
- INHERIT: From
torch_geometric.nn.MessagePassing.
- INHERIT: From
Workflows
-
Defining a Custom GNN Layer
- Inherit from
torch_geometric.nn.MessagePassing. - Set the aggregation scheme (
aggr='add','mean', or'max') in__init__. - Implement the forward pass using
self.propagate(). - Define the
message()function to compute the transformation for each edge. - Optionally define the
update()function to transform aggregated results.
- Inherit from
-
Mini-batching Large Graphs
- Use
torch_geometric.loader.DataLoaderinstead of the standard PyTorch version. - PyG automatically creates a single giant disjoint graph from a list of small graphs.
- The
batchvector in the resultingDataobject tracks which original graph each node belongs to. - Use global pooling (e.g.,
global_mean_pool) to aggregate node features into graph-level representations.
- Use
-
Constructing Graphs from Point Clouds
- Represent point clouds as node features in a tensor
[N, F]. - Apply
knn_graph()to dynamically compute anedge_indexbased on spatial proximity. - Pass the results into an
EdgeConvorDynamicEdgeConvlayer for feature extraction.
- Represent point clouds as node features in a tensor
Non-Obvious Insights
- Auto-Indexing: The
_iand_jnotation inMessagePassingmethods automatically handles indexing into source and destination nodes during propagation without manual slice logic. - Disjoint Representation: PyG batches multiple graphs by stacking them into a single block-diagonal adjacency matrix. This allows standard sparse matrix operations to process multiple graphs in parallel without zero-padding.
- Modular Aggregation: Aggregation is a first-class principle in PyG; users can swap simple sum/mean with advanced learnable schemes like
SoftmaxAggregationby simply changing theaggrparameter.
Evidence
- “PyG provides the MessagePassing base class, which helps in creating such kinds of message passing graph neural networks by automatically taking care of message propagation.” (https://pytorch-geometric.readthedocs.io/en/latest/tutorial/create_gnn.html)
- “Tensors passed to propagate() can be mapped to the respective nodes i and j by appending _i or _j to the variable name.” (https://pytorch-geometric.readthedocs.io/en/latest/tutorial/create_gnn.html)
Scripts
scripts/pytorch-geometric_tool.py: Template for a custom GNN layer and graph data loader.scripts/pytorch-geometric_tool.js: Node.js script to run PyG training experiments.
Dependencies
- torch
- torch-geometric
- torch-scatter / torch-sparse (optional but recommended)