项目介绍:PyTorch Geometric
PyTorch Geometric(简称PyG)是一款依托于PyTorch的库,专注于简化图神经网络(GNNs)的编写和训练。它广泛适用于各种结构化数据的应用场景。这款库集成了多个用于深度学习的图算法及其他不规则结构的数据处理方法,也称为几何深度学习。
库的亮点
-
易用的统一API: PyG提供了简单和易于使用的API,用户只需10到20行代码即可开始GNN模型的训练。其设计原则接近于原生PyTorch,对于已经熟悉PyTorch的用户来说,上手PyG非常简单。
-
全面且维护良好的GNN模型: 库中的绝大多数先进图神经网络架构已由开发者或论文作者实现,用户可以直接应用。
-
高度的灵活性: 用户可以轻松地扩展现有模型以开展自己的GNN研究。简单的消息传递API,以及多种操作和实用功能,使得对现有模型进行修改或创建新架构变得简单。
-
大规模真实场景GNN模型: PyG专注于在现实场景中应用GNN的需求,支持各种类型的图学习,包括但不限于:能处理数百万节点的可扩展GNN,支持时间节点预测的动态GNN,以及含有多种节点和边类型的异质GNN。
新用户快速指南
训练自己的GNN模型
PyG使得创建和训练GNN模型异常简单。例如,用户可以通过加载Cora数据集,并使用预定义的GCNConv
来创建一个简单的两层GCN模型进行论文分类。
import torch
from torch import Tensor
from torch_geometric.nn import GCNConv
from torch_geometric.datasets import Planetoid
dataset = Planetoid(root='.', name='Cora')
class GCN(torch.nn.Module):
def __init__(self, in_channels, hidden_channels, out_channels):
super().__init__()
self.conv1 = GCNConv(in_channels, hidden_channels)
self.conv2 = GCNConv(hidden_channels, out_channels)
def forward(self, x: Tensor, edge_index: Tensor) -> Tensor:
x = self.conv1(x, edge_index).relu()
x = self.conv2(x, edge_index)
return x
model = GCN(dataset.num_features, 16, dataset.num_classes)
用户可以在训练循环中优化模型,与标准的PyTorch训练过程类似。
架构概述
PyG提供了一个多层框架,允许用户在低级和高级层面上构建图神经网络解决方案。其架构包括以下几个组件:
- 引擎:利用强大的PyTorch深度学习框架,并支持完整的
torch.compile
和TorchScript。 - 存储:管理数据处理、转换和加载流程,能够处理大规模图数据集。
- 运营:捆绑了实现图神经网络的基本功能块。
- 模型:提供丰富的GNN模型和示例,展示如何在标准图基准上应用GNN模型。
实现的GNN模型
PyG支持多种图神经网络模型和层,其中**nn.MessagePassing
**接口用于实现所有GNN层。这些层可以堆叠在一起,构建图神经网络模型。以下是一些示例模型和层:
- GCNConv:由Kipf与Welling提出,用于半监督分类的图卷积网络。
- GATConv:由Veličković等人提出的图注意力网络。
- ChebConv:Defferrard等人提出的在图上使用快速局部光谱滤波的卷积神经网络。
PyG的特性和易用性使其成为在图结构数据上进行机器学习的理想选择。无论是研究者还是初次接触机器学习工具包的用户,都能通过PyG快速上手并进行有效的学习与研究。