Pytorch Geometric实践——利用Pytorch搭建GNN
2024.01.07 17:23浏览量:28简介:本文将介绍如何使用PyTorch Geometric(PyG)搭建图神经网络(GNN)。我们将从安装PyG开始,逐步深入到构建基本的GNN模型,并通过一个实例展示如何使用PyG进行图数据预处理和模型训练。
千帆应用开发平台“智能体Pro”全新上线 限时免费体验
面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用
在PyTorch Geometric(PyG)中,我们可以方便地实现各种图神经网络(GNN)模型。PyG基于PyTorch,提供了丰富的图神经网络层和算法,使得我们能够快速搭建和训练GNN。下面,我们将分步骤介绍如何使用PyG搭建一个简单的GNN模型。
一、安装PyTorch Geometric
要使用PyG,首先需要安装PyTorch和PyG。在终端中输入以下命令进行安装:
pip install torch torchvision
在安装好PyTorch之后,可以使用以下命令安装PyG:
pip install torch-scatter torch-sparse torch-cluster torch-spline-conv -f https://pytorch-geometric.com/whl/torch-1.8.0.html
二、数据预处理
在搭建GNN之前,我们需要对图数据进行预处理。PyG提供了torch_geometric.data
模块来处理图数据。下面是一个简单的示例,演示如何加载数据并将其转换为PyG所需的格式:
from torch_geometric.datasets import Planetoid
from torch_geometric.data import DataLoader
dataset = Planetoid(root='/tmp/Cora', name='Cora') # 加载Cora数据集
loader = DataLoader(dataset, batch_size=32, shuffle=True) # 创建数据加载器
三、搭建GNN模型
接下来,我们将使用PyG搭建一个简单的GNN模型。首先,导入所需的模块:
from torch_geometric.nn import GCNConv
from torch_geometric.data import DataLoader
然后,定义一个简单的GCN模型:
def create_model():
return GCNConv(dataset.num_features, dataset.num_classes)
四、训练模型
现在,我们可以开始训练模型了。首先,创建一个优化器和一个损失函数:
import torch.optim as optim
from torch_geometric.nn import loss as gnn_loss
optimizer = optim.Adam(model.parameters(), lr=0.01)
loss_fn = gnn_loss.CrossEntropyLoss()
接下来,在训练循环中迭代优化器、损失函数和模型:
best_model = None
best_acc = -1.
for epoch in range(200):
model.train()
optimizer.zero_grad()
out = model(data.x, data.edge_index)
loss = loss_fn(out[data.train_mask], data.y[data.train_mask])
loss.backward()
optimizer.step()
train_acc = (out[data.train_mask].argmax(dim=1) == data.y[data.train_mask]).sum().item() / data.y[data.train_mask].size(0)
if train_acc > best_acc:
best_acc = train_acc
best_model = model
print(f'Epoch: {epoch:03d}, Loss: {loss:.4f}, Train Accuracy: {train_acc:.4f}')

发表评论
登录后可评论,请前往 登录 或 注册