【PYG】pyg里dataloader和torch中dataloader有什么不一样

torch.utils.data.DataLoadertorch_geometric.loader.DataLoader 是两个不同的加载器,它们分别用于处理不同类型的数据。以下是它们之间的主要区别:

torch.utils.data.DataLoader

torch.utils.data.DataLoader 是 PyTorch 中的通用数据加载器,用于加载任何遵循 torch.utils.data.Dataset 接口的数据集。它主要用于加载图像、文本和其他常见的数据类型。关键特性包括:

  • 通用性:适用于所有遵循 Dataset 接口的数据集。
  • 批量加载:支持批量加载数据,并行处理,数据打乱等。
  • 数据增强:可以使用 transform 进行数据增强和预处理。
  • 自定义 collate_fn:允许自定义数据批量处理函数。

torch_geometric.loader.DataLoader

torch_geometric.loader.DataLoader 是 PyTorch Geometric (PyG) 提供的数据加载器,专门用于加载图数据。它与 torch.utils.data.DataLoader 类似,但具有一些针对图数据的特性和优化。关键特性包括:

  • 图数据支持:直接支持 PyG 中的 DataBatch 对象,处理图的节点特征、边索引和其他属性。
  • 批量处理图数据:可以将多个图数据对象合并为一个批次,处理不同图的批量操作。
  • 支持稀疏表示:适合处理稀疏图结构,利用 PyG 的稀疏矩阵表示。
  • 自定义批处理:可以自定义 collate_fn 以处理复杂的批处理逻辑。

示例代码

使用 torch.utils.data.DataLoader

这是一个通用的 DataLoader 示例,适用于非图数据。

import torch
from torch.utils.data import DataLoader, Datasetclass MyDataset(Dataset):def __init__(self, data, labels):self.data = dataself.labels = labelsdef __len__(self):return len(self.data)def __getitem__(self, idx):return self.data[idx], self.labels[idx]# 创建一些示例数据
data = torch.randn(100, 10)
labels = torch.randint(0, 2, (100,))# 创建数据集
dataset = MyDataset(data, labels)# 使用 DataLoader 加载数据
loader = DataLoader(dataset, batch_size=32, shuffle=True)# 迭代加载数据
for batch_data, batch_labels in loader:print("Batch data shape:", batch_data.shape)print("Batch labels shape:", batch_labels.shape)
使用 torch_geometric.loader.DataLoader

这是一个用于加载图数据的示例。

import torch
from torch_geometric.data import Data
from torch_geometric.loader import DataLoader
from torch.utils.data import Datasetclass MyGraphDataset(Dataset):def __init__(self, num_samples, num_nodes, num_node_features):self.num_samples = num_samplesself.num_nodes = num_nodesself.num_node_features = num_node_featuresdef __len__(self):return self.num_samplesdef __getitem__(self, idx):x = torch.randn(self.num_nodes, self.num_node_features)edge_index = torch.tensor([[i, (i + 1) % self.num_nodes] for i in range(self.num_nodes)], dtype=torch.long).t().contiguous()y = torch.randn(self.num_nodes, 1)return Data(x=x, edge_index=edge_index, y=y)# 创建图数据集
num_samples = 100
num_nodes = 10
num_node_features = 8
dataset = MyGraphDataset(num_samples, num_nodes, num_node_features)# 使用 PyG DataLoader 加载图数据
loader = DataLoader(dataset, batch_size=32, shuffle=True)# 迭代加载图数据
for batch in loader:print("Batch node features shape:", batch.x.shape)print("Batch edge index shape:", batch.edge_index.shape)

主要区别

  • 数据类型torch.utils.data.DataLoader 适用于通用数据类型,torch_geometric.loader.DataLoader 专门用于图数据。
  • 批处理方式torch.utils.data.DataLoader 处理通用张量数据,torch_geometric.loader.DataLoader 处理图数据并支持将多个图合并为一个批次。
  • 自定义能力:两者都支持自定义 collate_fn,但 torch_geometric.loader.DataLoadercollate_fn 主要用于处理图数据的合并和批处理。

根据你的具体需求选择合适的数据加载器。如果处理的是图数据,推荐使用 torch_geometric.loader.DataLoader。对于其他类型的数据,可以使用 torch.utils.data.DataLoader

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

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

相关文章

论文1--ViT

Vision Transformer (ViT) 论文:https://arxiv.org/abs/2010.11929代码:GitHub - google-research/vision_transformer 1.背景 (1)transformer在NLP很强,但在CV的应用还非常有限,在此之前只有目标检测中…

【轻量化】YOLOv8 更换骨干网络之 MobileNetv4 | 《号称最强轻量化网络》

论文地址:https://arxiv.org/pdf/2404.10518 代码地址:https://github.com/tensorflow/models/blob/master/official/vision/modeling/backbones/mobilenet.py 文章速览 文章摘要 MobileNetV4引入了一个名为Universal Inverted Bottleneck (UIB) 的新搜索模块,这个模块融合…

2024年网络安全技术全景扫描:新趋势与新挑战

**# 2024年网络安全技术全景扫描:新趋势与新挑战 随着技术的飞速发展,网络安全领域在2024年迎来了新的变革。从人工智能的深入应用到零信任模型的广泛采纳,再到云环境、太空网络以及量子信息技术的兴起,这些新兴技术正在重塑网络…

民用无人机企业招标投标需要资质证书详解

一、基础资质 在民用无人机企业的招标投标过程中,基础资质是首要考虑的因素。这些资质通常包括企业注册资质、税务登记证、组织机构代码证等。 1.1 企业注册资质 企业应具备合法的注册资质,即营业执照。该执照应包含企业名称、注册地址、法定代表人、…

在Ubuntu 14.04上安装和配置Magento的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 Magento 是最流行的电子商务网站内容管理系统。它被小型企业和大型企业公司广泛使用,并且可以通过成千上万的扩展和主…

谈谈华为国产系列

目前借着华为发布会,谈谈华为的软件系列 1.鸿蒙系统 鸿蒙是手机系统,兼容安卓软件,目前华为借助国内软件公司,适配鸿蒙,即将纯血。鸿蒙系统借助这一波互联网兴起,没有遇到之前各种系统的麻烦之中&#xf…

idea集成uglifycss压缩混淆css

Uglifycss介绍 https://www.npmjs.com/package/uglifycss 命令行 $ uglifycss [options] [filename] [...] > output 选项: --max-line-len n每个字符添加一个换行符(大约); 表示无换行符,并且是默认值n0 --expand-vars扩…

【Linux】性能分析器 perf 详解(二):list、record、report、top

上一篇:【Linux】性能分析器 perf 详解(一) 1、perf命令列表 annotate 读取perf.data(由perf record生成)并结合源代码展示详细的性能分析结果,包括CPU执行热点、函数调用栈等信息。archive 使用perf.data文件中找到的带构建标识符的对象文件创建归档文件,便于后续对这…

考研数学|《660》一刷的错题,二刷还错,怎么能做对?

660这本习题册的难度不小,它不仅考察你对知识点的掌握程度,还考察你的解题思路和方法。很多题目会同时涉及多个知识点,而且对概念的挖掘非常深入,甚至在一些容易出错的地方还设置了陷阱,这对于基础不扎实的同学来说&am…

商城积分系统的代码实现(下)-- 积分订单的退款与结算

一、接着上文 用户在消耗积分的时候&#xff0c;需要根据一定的逻辑&#xff0c;除了扣减账户的当前余额&#xff0c;还需要依次消费积分订单的余额。 private void updatePointsOrderByUse(Integer schoolId, Long userId, String pointsType, int usingPoints) {List<Po…

Web攻防基础篇-文件上传漏洞

文件解析安全问题上&#xff0c;格式解析是一对一的&#xff08;不能jpg解析php&#xff09;&#xff0c;换句话来说有解析错误配置或后缀解析漏洞时才能实现格式差异解析。 文件上传漏洞 程序或系统未对上传文件作全面的限制&#xff0c;导致用户可以上传某些非法文件&#…

换热器材质的选择

一、换热器材质的选择 选择烟气换热器的材质是一个涉及多个因素的综合考量过程。 1、根据烟气成分 烟气成分是一个重要的考虑因素。烟气中可能含有酸性物质和腐蚀性物质&#xff0c;如HCl、SO2等。这些物质对换热器的材质具有腐蚀性&#xff0c;因此所选材料应能够长期承受这些…

【数据结构】数据结构前置知识

这里写目录标题 基本概念与术语数据数据元素数据项数据对象数据结构 逻辑结构和物理结构物理结构顺序存储结构链式存储结构 逻辑结构集合结构线性结构树形结构图形结构 算法时间复杂度和空间复杂度大O的渐进表示法时间复杂度常数阶线性阶对数阶平方阶常见时间复杂度 空间复杂度…

Jetson系列机载电脑创建热点模式配置方法

Jetson nano为例—— 创建热点模式配置方法 1.1、新建一个 WiFi 在屏幕右上角找到网络图标&#xff0c;点击后选择“Edit Connections”选项&#xff0c;进入选择网络连接页面&#xff0c;然后点击左下角加号&#xff0c;新建一个连接&#xff0c;类型选择 WiFi 后点击 “cre…

在TkinterGUI界面显示WIFI网络(ESP32s3)摄像头画面

本实验结合了之前写过的两篇文章Python调用摄像头&#xff0c;实时显示视频在Tkinter界面以及ESP32 S3搭载OV2640摄像头释放热点&#xff08;AP&#xff09;工作模式–Arduino程序&#xff0c;当然如果手头有其他可以获得网络摄像头的URL即用于访问摄像头视频流的网络地址&…

【笔记】从零开始做一个精灵龙女-拆uv阶段

目录 先回顾一下拆uv的基础流程吧 肩部盔甲分UV示例 手环UV部分 腰带UV部分 其它也差不多&#xff0c;需要删掉一半的就先提前删掉一半&#xff0c;然后把不需要的被遮挡的面也删掉 龙角UV 胸甲UV 侧边碎发UV 马尾UV 脸部/耳朵UV 特殊情况&#xff1a;如果要删一半再…

MacOS 安装 Maven 并配置环境变量

一、简介 Maven 是一款基于 Java 平台的项目管理和整合工具&#xff0c;用来构建项目的。也就是清理、编译、测试、运行、打包、安装整个过程都交给 Maven 管理&#xff0c;整个过程就是构建。 二、安装 Java JDK Maven 依赖 Java JDK&#xff0c;如果本机没有安装过 Java 的…

Web后端开发之前后端交互

http协议 http ● 超文本传输协议 &#xff08;HyperText Transfer Protocol&#xff09;服务器传输超文本到本地浏览器的传送协议 是互联网上应用最为流行的一种网络协议,用于定义客户端浏览器和服务器之间交换数据的过程。 HTTP是一个基于TCP/IP通信协议来传递数据. HTT…

智慧校园-办公管理系统总体概述

智慧校园行政办公系统是专为高校及教育机构定制的数字化办公解决方案&#xff0c;它整合了众多办公应用与服务&#xff0c;旨在全面提升校园行政管理的效率与便捷性&#xff0c;推动信息的自由流动&#xff0c;实现绿色无纸化办公环境。该系统作为一个综合平台&#xff0c;将日…

大数据面试题之Spark(5)

Spark SQL与DataFrame的使用? Sparksql自定义函数?怎么创建DataFrame? HashPartitioner和RangePartitioner的实现 Spark的水塘抽样 DAGScheduler、TaskScheduler、SchedulerBackend实现原理 介绍下Sparkclient提交application后&#xff0c;接下来的流程? Spark的几种…