当前位置: 首页 > news >正文

【操作记录】pytorch_geometric安装方法

pytorch_geometric安装方法

github地址

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

image-20230829095958034

点击here手动安装依赖

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

image-20230829100045409

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

image-20230829100117304

主要不要直接:pip install torch_geometric

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

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

pip install torch_geometric==2.0.4

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

import torch
import networkx as nx
import matplotlib.pyplot as plt
from torch_geometric.datasets import KarateClub
from torch_geometric.utils import to_networkxdataset = 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)    
image-20230829103237533
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, hmodel = 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]
image-20230829103342802

训练模型

import timemodel = 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-supervisedloss.backward()  optimizer.step()  return loss, hfor 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)
http://www.lryc.cn/news/150051.html

相关文章:

  • EventSystem 事件系统
  • 2.2 Vector<T> 动态数组(模板语法)
  • dockerfile 例子(二)
  • openssh---Windows下git安装配置gitlab
  • vscode宏键绑定
  • 外贸企业如何借助CRM提升企业发展?
  • 初步了解ES
  • Linux基础(三)
  • python函数调用的四种方式
  • 如何将两个pdf合并成一个?pdf合并技巧分享
  • qt : day 3
  • flutter高德地图大头针
  • 【线性代数】矩阵求导的本质与分子布局、分母布局的本质(矩阵求导——本质篇)
  • 快速了解状态管理库Pinia及其使用方法
  • scratch绘制同心圆 2023年5月中国电子学会图形化编程 少儿编程 scratch编程等级考试四级真题和答案解析
  • 【LeetCode】3. 无重复字符的最长子串
  • 苹果macOS 14开发者预览版Beta 7发布 新增超过100款视频壁纸和屏保
  • Redis 7 第五讲 事务、管道、发布订阅 过渡篇
  • [SpringBoot3]视图技术Thymeleaf
  • wangluobiancheng
  • 大数据之hadoop入门
  • 浅谈多人游戏原理和简单实现。
  • 活动预告 | 龙智、紫龙游戏与JFrog专家将出席龙智DevSecOps研讨会,探讨企业大规模开发创新
  • 米每秒和千米每小时的换算
  • js实现图形验证码
  • 一句话画出动漫效果
  • 【openGauss2.1.0 TPC-C数据导入】
  • vue+elementui表格导出
  • 掌握前端利器:JavaScript页面渲染高阶方法解析与实战
  • 面试题——网络IO模型