【操作记录】pytorch_geometric安装方法

pytorch_geometric安装方法

github地址

主要不要直接pip install安装,会由于依赖无法安装而失败

点击here手动安装依赖

选择对应的pytorch版本,我的是Win10 Python3.8.3+Pytorch1.8.1+CUDA10.2

手动下载四个依赖包本地安装:

主要不要直接:pip install torch_geometric

这样会安装最新的torch_geometric,后面在使用时候会出现Pytorch AttributeError: module 'torch' has no attribute 'sparse_scs'

这里手动指定低版本安装:

pip install torch_geometric==2.0.4

接下来就可以跑一个图卷积神经网络试试:

Python 复制代码
import torch
import networkx as nx
import matplotlib.pyplot as plt
from torch_geometric.datasets import KarateClub
from torch_geometric.utils import to_networkx


dataset = KarateClub()

def visualize_graph(G, color):
    plt.figure(figsize=(7,7))
    plt.xticks([])
    plt.yticks([])
    nx.draw_networkx(G, pos=nx.spring_layout(G, seed=42), with_labels=False,
                     node_color=color, cmap="Set2")
    plt.show()


def visualize_embedding(h, color, epoch=None, loss=None):
    plt.figure(figsize=(7,7))
    plt.xticks([])
    plt.yticks([])
    h = h.detach().cpu().numpy()
    plt.scatter(h[:, 0], h[:, 1], s=140, c=color, cmap="Set2")
    if epoch is not None and loss is not None:
        plt.xlabel(f'Epoch: {epoch}, Loss: {loss.item():.4f}', fontsize=16)
    plt.show()
    
G = to_networkx(data, to_undirected=True)
visualize_graph(G, color=data.y)    
python 复制代码
import torch
from torch.nn import Linear
from torch_geometric.nn import GCNConv
class GCN(torch.nn.Module):
    def __init__(self):
        super().__init__()
        torch.manual_seed(1234)
        self.conv1 = GCNConv(dataset.num_features, 4) # 只需定义好输入特征和输出特征即可
        self.conv2 = GCNConv(4, 4)
        self.conv3 = GCNConv(4, 2)
        self.classifier = Linear(2, dataset.num_classes)

    def forward(self, x, edge_index):
        h = self.conv1(x, edge_index) # 输入特征与邻接矩阵(注意格式,上面那种)
        h = h.tanh()
        h = self.conv2(h, edge_index)
        h = h.tanh()
        h = self.conv3(h, edge_index)
        h = h.tanh()  
        
        # 分类层
        out = self.classifier(h)

        return out, h

model = GCN()
_, h = model(data.x, data.edge_index)
print(f'Embedding shape: {list(h.shape)}')

visualize_embedding(h, color=data.y)
复制代码
Embedding shape: [34, 2]

训练模型

Python 复制代码
import time

model = GCN()
criterion = torch.nn.CrossEntropyLoss()  # Define loss criterion.
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)  # Define optimizer.

def train(data):
    optimizer.zero_grad()  
    out, h = model(data.x, data.edge_index) #h是两维向量,主要是为了咱们画个图 
    loss = criterion(out[data.train_mask], data.y[data.train_mask])  # semi-supervised
    loss.backward()  
    optimizer.step()  
    return loss, h

for epoch in range(401):
    loss, h = train(data)
    if epoch % 10 == 0:
        visualize_embedding(h, color=data.y, epoch=epoch, loss=loss)
        time.sleep(0.3)
相关推荐
王者鳜錸几秒前
解决方案十八-企业级客服通话录音/销售录音对话分析
人工智能·客户录音分析·房产销售录音分析·试驾录音分析·销售录音分析
用户03321266636713 分钟前
使用 Python 在 Word 文档中添加批注
python
蜡笔削薪16 分钟前
财联万业(杭州)数字科技有限公司能否给代理划定独家经营区域?
大数据·人工智能·python·科技
Lion0918 分钟前
【04】50 行代码实现最小 Agent:不依赖任何框架
人工智能·github
百度Geek说23 分钟前
AI 写代码越来越快,质量谁来守?网盘主端 FE 的 AICR 准入实践
人工智能
俊哥V24 分钟前
每日 AI 研究简报 · 2026-07-06
人工智能·ai
站大爷IP28 分钟前
Python的字典合并坑了我三天,原来是踩了这个坑
python
动恰客流统计34 分钟前
零食集合店爆火背后:客流统计技术如何重构新零售运营决策
大数据·人工智能
Tbisnic44 分钟前
从链式法则到ReLU:梯度消失的数学本质与工程解决方案
python·深度学习·大模型·激活函数·梯度消失
Wbp1 小时前
本地 Codex 接口登录报错 account/read failed 的排查与修复记录
人工智能