【杂七杂八】GyP-DataLoader

news2024/12/27 13:33:49

前言:

  • pytorch :2.0.0+cuda 11.8
  • Jupyter Notebook:7.0.6
  • 所以 PyG不需要安装依赖包,直接cuda/pip install ; Jupyter Notebook 有扩展管理器,不需要也装不了 很多教程里的扩展管理插件 😁

1 基本数据结构 torch_geometric.data.Data

  • data.x : 节点特征矩阵[num_nodes, num_node_features]
  • data.edge_index: 将稀疏的邻接矩阵表示为COO格式(Coordinate Format,一种稀疏矩阵存储方式) [2, num_edges]
    • 将邻接矩阵中不为零的元素坐标转置成为列向量拼在一起
    • 无向图 两个节点之间是隐藏着两个箭头 ———— 无向图的邻接矩阵是对角阵
      在这里插入图片描述
m = np.array([[0,1,0],[1,0,1],[0,1,0]])
print("稀疏的邻接矩阵:\n" , m) # 原始稀疏的邻接矩阵
edge_index = torch.tensor([[0,1,1,2],[1,0,2,1]],dtype = torch.long)
print("COO格式:\n",edge_index) # COO形式的邻接矩阵【无向图】

在这里插入图片描述

  • data.edge_attr : 边特征矩阵[num_edges, num_edge_features]
  • data.y :标签
    • node-level : [num_nodes, *]
    • graph-level : [1, *]

import torch
from torch_geometric.data import Data

edge_index = torch.tensor([[0,1,1,2],[1,0,2,1]],dtype = torch.long)
x = torch.tensor([[-1],[0],[1]],dtype=torch.float)
# 构造出一个图样本
data = Data(x=x,edge_index=edge_index)

2 加载数据集 torch_geometric.datasets

2.1 Graph-level

from torch_geometric.datasets import TUDataset
dataSet = TUDataset(root='/tmp/ENZYMES',name='ENZYMES')
print(len(dataSet)) # 数据集中含有600个图
print(dataSet.num_classes) # 6各类
print(dataSet.num_node_features) # 节点特征为3维
  • 该样本(图)具有37个节点,每个节点含有3个特征,具有168/2=84个边,被分配到一个类(graph-level)
data_0 = dataSet[0]
print(data_0) 
print(data_0.is_undirected) # True

在这里插入图片描述

2.2 Node-level

from torch_geometric.datasets import Planetoid
dataset1 = Planetoid(root='/tmp/Cora', name='Cora') # 最好科学上网下载
print(len(dataset1))# 1 只有一个图
print(dataset1.num_classes) # 7 
print(dataset1.num_node_features) # 1433

在这里插入图片描述

  • 划分了 训练集、验证机、测试集
  • 注意 y : 每个节点都有一个标签
data1 = dataset1[0]
print(data1.is_undirected)
print(data1.train_mask.sum().item())
print(data1.val_mask.sum().item())
print(data1.test_mask.sum().item())

在这里插入图片描述

3 Mini-batches torch_geometric.loader.DataLoader

  • 主要思想
    • DataLoader 将所有图的邻接矩阵按对角放置拼接成一个大矩阵,每个图的邻接矩阵在这个大矩阵可以视为一个元素
    • batch_size 是一次训练选择多少个图
    • DataLoader 会保存每一批次的训练样本,使用batch来将训练样本的节点对应哪个图的索引

在这里插入图片描述


简单验证:

  • 不要打乱数据集,batch_size设置为32
from torch_geometric.loader import DataLoader

dataset2 = TUDataset(root='/tmp/ENZYMES', name='ENZYMES', use_node_attr=True)
loader2 = DataLoader(dataset2,batch_size=32,shuffle=True) # 这里不按官网的教程来洗牌打乱,会更容易理解
  • 取出前32个图
num = 0
num_node = 0
num_edge = 0
for data in dataset2[:32]:
    m = data.edge_index.size()
    n = data.x.size()
    num_node += n[0]
    num_edge += m[1]
    num += 1
print(num) # 32个图
print(num_node) # 总计 1069个节点
print(num_edge) # 总计 4264个边
  • 使用DataLoader加载数据集
loader3 = DataLoader(dataset2,batch_size=32,shuffle=False)
torch.set_printoptions(threshold=np.inf)

print(dataset2[0])
num  = 0 
for data in loader3:
    # print(data.x)
    print(data)
    print(data.x.size())
    if  num  < 1 :
        print(data.batch)
    print(data.batch.size())
    num += 1
    print("===============")

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1388897.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring AOP 源码分析

【阅读前提】&#xff1a; 需了解AOP注解开发流程&#xff1a;链接 一、注解 EnableAspectJAutoProxy 在配置类中添加注解EnableAspectJAutoProxy&#xff0c;便开启了AOP&#xff08;面向切面编程&#xff09; 功能。此注解也是了解AOP源码的入口。 EnableAspectJAutoProxy…

蓝桥杯备赛 | 洛谷做题打卡day2

​ 蓝桥杯备赛 | 洛谷做题打卡day2 嵌套循环yyds&#xff01;&#xff01; 题目来源&#xff1a;洛谷P2670 [NOIP2015 普及组] 扫雷游戏 题目背景 NOIP2015 普及组 T2 题目描述 扫雷游戏是一款十分经典的单机小游戏。在 n n n 行 m m m 列的雷区中有一些格子含有地雷&am…

❤ Uniapp使用二 ( 日常使用篇)

❤ Uniapp使用二 ( 日常使用篇) 一、表单 1、基础表单验证 form <form submit"formSubmit" reset"formReset"> <view class"uni-form-item uni-column"><view class"title">请选择类型{{selectvalue}}</view&…

海思SD3403,SS928/926,hi3519dv500,hi3516dv500移植yolov7,yolov8(9)

上一节yolov8的训练已经完成了,现在要开始做模型的转换了,这里和yolov7方式相似,但是有一些差异,尤其是yolov7的不带NMS部分的输出顺序和yolov8的输出顺序与格式是有差异的。 首先还是要自己手动加入rpn_op,这里包含了filter,sort,nms部分。 我们一个一个看,首先filter.py…

深度学习基础知识整理

自动编码器 Auto-encoders是一种人工神经网络&#xff0c;用于学习未标记数据的有效编码。它由两个部分组成&#xff1a;编码器和解码器。编码器将输入数据转换为一种更紧凑的表示形式&#xff0c;而解码器则将该表示形式转换回原始数据。这种方法可以用于降维&#xff0c;去噪…

高级分布式系统-第15讲 分布式机器学习--分布式机器学习算法

高级分布式系统汇总&#xff1a;高级分布式系统目录汇总-CSDN博客 分布式机器学习算法 按照通信步调&#xff0c;大致可以分为同步算法和异步算法两大类。 同步算法下&#xff0c;通信过程中有一个显式的全局同步状态&#xff0c;称之为同步屏障。当工作节点运行到同步屏障 …

MySQL索引创建原则和失效问题

一.索引创建原则 数据量较大,且查询比较频繁的表常作为查询条件、分组、排序的字段字段内容区分度高内容较长,使用前缀索引尽量创建联合索引要控制索引的数量如果索引列不能存储NULL值,请在创建表示使用NOT NULL约束它 二.索引失效 违反最左前缀法则范围查询右边的列,不能使用…

可持续技术:2024 年技术趋势的绿色创新

随着我们步入2024年&#xff0c;对可持续技术解决方案的关注从未如此强烈。从可再生能源到环保小工具&#xff0c;科技行业正朝着更环保、更可持续的未来大步迈进。 在快速发展的技术领域&#xff0c;创新是推动我们走向可持续未来的动力。随着我们步入2024年&#xff0c;对可持…

基于Docker Compose单机实现多级缓存架构2024

文章目录 一、环境参考二、专栏简介三、扩展 一、环境参考 NameVersionDocker Desktop for Windows4.23.0Openjdk8MySQL8.2.0Redis7.2Canal1.1.7OpenResty1.21.4.3-3-jammy-amd64Lua-Caffeine- 二、专栏简介 多级缓存实现过程比较长&#xff0c;将拆分为多个文章分步讲述。如…

[我的rust付费栏目]rust跟我学(一)已上线

大家好&#xff0c;我是开源库get_local_info的作者带剑书生&#xff0c;get_local_info诞生半个月&#xff0c;现在已经获得500的下载量&#xff0c;并获社区日更前五名&#xff0c;后被西安城市开发者社区收录&#xff08;【我的Rust库】get_local_info 0.1.5发布_rust_科比布…

CMake 实战构建TcpServer项目 静态库/动态库

爱编程的大丙CMake&#xff1a; 20. 举例 - 下_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV14s4y1g7Zj?p20&spm_id_frompageDriver&vd_sourcea934d7fc6f47698a29dac90a922ba5a3 hehedalinux:~/Linux/LinuxServerCpp$ ls Buffer.cpp Log.h Buffe…

墙地砖外形检测的技术方案-图像分割

基础原理 由于对碗口进行缺口检测&#xff0c;因此只需要碗口的边界信息。得到陶瓷碗区域填充后的图像&#xff0c;对图像进行边缘检测。这是属于图像分割中的内容&#xff0c;在图像的边缘中&#xff0c;可以利用导数算子对数字图像求差分&#xff0c;将边缘提取出来。 案例…

shell脚本算术运算

算术运算符 注意&#xff1a; 不是单引号&#xff0c;是键盘左上角那个反单引号条件表达式要放在方括号之间&#xff0c;并且要有空格&#xff0c;例如:[ a a ab]是错误的&#xff0c;必须写成[ $a $b ]。cost_Minexpr $cost_time / 60 前后不能有空格&#xff0c;否则出…

【第十四课】并查集(acwing-836合并集合 / 做题思路 /c++代码)

目录 错误思路(但能骗分emm)--邻接矩阵(可以跳过) 思路 存在的问题 代码如下 并查集 思路 代码如下 一些解释 错误思路(但能骗分emm)--邻接矩阵(可以跳过) 思路 刚看到这道题我自己做的时候&#xff0c;因为之前学的trie树的时候意识到使用二维数组的含义&#xff0c;…

如何配置Pycharm服务器并结合内网穿透工具实现远程开发

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;…

开启C++之旅(下):引用、内联函数及现代特性(auto和范围for循环)

上次介绍了&#xff1a;开启C之旅&#xff08;上&#xff09;&#xff1a;探索命名空间与函数特性&#xff08;缺省参数和函数重载&#xff09; 今天就接着进行c入门的知识讲解 文章目录 1.引用1.1引用概念1.2引用特性1.3常引用其他情况 1.4引用使用场景1.4.1做参数1.4.2做返回…

使用VSCode内的jupyter编写R语言:绘制中国省份地区热力图

R语言绘制中国省份地区热力图教程 1、R语言的安装和编辑器的选择 对于一门从未接触过的编程语言&#xff0c;相信大家的吐槽点和我一样&#xff1a;又要安装软件&#xff0c;配置环境&#xff01;其实R语言的安装和环境配置并不复杂&#xff0c;只需要安装两部分内容&#xf…

第15届蓝桥STEMA测评真题剖析-2023年12月17日Scratch编程初中级组

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第166讲。 第15届蓝桥第3次STEMA测评&#xff0c;这是2023年12月17日举办的STEMA&#xff0c;比赛仍然采取线上形式。这…

ESP32-Touch(Arduino)

Touch Touch传感器是一种外围设备&#xff0c;具有内部振荡器电路&#xff0c;可在固定时间段内测量相应GPIO引脚上的充电/放电频率。 因此&#xff0c;这些触摸传感器也被称为电容式传感器。例如&#xff0c;如果您触摸这些引脚中的任何一个&#xff0c;手指电荷将改变这个周…

Vue学习计划-Vue3--核心语法(十)Proxy响应式原理

Proxy响应式原理 1.Vue2的响应式 实现原理&#xff1a; 对象类型&#xff1a;通过Object.defineProperty()对属性的读取、修改进行拦截&#xff08;数据劫持&#xff09;数组类型&#xff1a;通过重写更新数组的一系列方法来实现拦截&#xff0c;&#xff08;对数组的变更方法…