【TORCH】查看dataloader里的数据,通过dataloader.dataset或enumerate
文章目录
- dataloader.dataset
- 示例代码
- 使用自定义数据集
- 使用 MNIST 数据集
- 说明
- enumerate
- 示例代码
- 说明
- 使用 MNIST 数据集的例子
dataloader.dataset
是的,您可以直接访问 train_loader 的数据集来查看数据,而不必通过 enumerate 遍历数据加载器。可以通过 train_loader.dataset 属性来访问数据集,然后直接索引或查看数据集中的数据。
示例代码
以下是一个如何直接查看 train_loader 数据集数据的示例:
使用自定义数据集
import torch
from torch.utils.data import DataLoader, TensorDataset# 生成一些示例数据
x_data = torch.randn(100, 10) # 100 个样本,每个样本有 10 个特征
y_data = torch.randn(100, 1) # 100 个样本,每个样本有 1 个标签# 创建 TensorDataset 和 DataLoader
dataset = TensorDataset(x_data, y_data)
train_loader = DataLoader(dataset, batch_size=16, shuffle=True)# 直接查看 train_loader 中的数据集
print(f'Total samples in dataset: {len(train_loader.dataset)}')# 查看前 5 个样本
for i in range(5):x, y = train_loader.dataset[i]print(f'Sample {i+1}')print(f'x: {x}')print(f'y: {y}')print()
使用 MNIST 数据集
import torch
from torchvision import datasets, transforms
from torch.utils.data import DataLoader# 定义数据转换
transform = transforms.Compose([transforms.ToTensor()])# 下载并加载 MNIST 数据集
train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
train_loader = DataLoader(train_dataset, batch_size=16, shuffle=True)# 直接查看 train_loader 中的数据集
print(f'Total samples in dataset: {len(train_loader.dataset)}')# 查看前 5 个样本
for i in range(5):x, y = train_loader.dataset[i]print(f'Sample {i+1}')print(f'x: {x.shape}') # x 是形状为 [1, 28, 28] 的图像张量print(f'y: {y}') # y 是标签print()
说明
- 自定义数据集:在第一个示例中,我们生成了随机数据并创建了一个
TensorDataset。然后,我们创建一个DataLoader并直接访问其数据集train_loader.dataset。我们打印了数据集的总样本数,并查看了前 5 个样本。 - MNIST 数据集:在第二个示例中,我们使用了 PyTorch 的
datasets.MNIST来下载和加载 MNIST 数据集。我们同样创建了一个DataLoader并直接访问其数据集train_loader.dataset。我们打印了数据集的总样本数,并查看了前 5 个样本。
通过这种方法,您可以直接访问并查看 train_loader 中的数据集,而不必遍历数据加载器。如果您有更多问题或需要进一步的帮助,请告诉我!
enumerate
在 PyTorch 中,DataLoader 对象通常用于加载训练和测试数据。要查看 train_loader 中的数据 x 和 y,您可以遍历 train_loader 并打印或检查数据。以下是一个示例,展示了如何查看 train_loader 中的数据:
示例代码
假设您已经有一个定义好的 train_loader,它加载了训练数据集:
import torch
from torch.utils.data import DataLoader, TensorDataset# 生成一些示例数据
x_data = torch.randn(100, 10) # 100 个样本,每个样本有 10 个特征
y_data = torch.randn(100, 1) # 100 个样本,每个样本有 1 个标签# 创建 TensorDataset 和 DataLoader
dataset = TensorDataset(x_data, y_data)
train_loader = DataLoader(dataset, batch_size=16, shuffle=True)# 查看 train_loader 中的数据
for i, (x, y) in enumerate(train_loader):print(f'Batch {i+1}')print(f'x: {x}')print(f'y: {y}')print()# 如果只想查看一个批次的数据,可以在这里 breakbreak
说明
- 生成数据:我们首先生成一些示例数据
x_data和y_data,每个样本有 10 个特征和 1 个标签。 - 创建数据集:我们使用
TensorDataset将x_data和y_data结合起来。 - 创建 DataLoader:我们创建一个
DataLoader对象train_loader,指定批次大小为 16,并启用数据打乱(shuffle)。 - 遍历 DataLoader:我们遍历
train_loader中的每个批次,并打印批次编号以及对应的x和y数据。
通过这种方法,您可以查看 train_loader 中的数据。如果您只想查看一个批次的数据,可以在第一个循环中加入 break。
使用 MNIST 数据集的例子
如果您使用的是像 MNIST 这样的标准数据集,代码会稍有不同:
import torch
from torchvision import datasets, transforms
from torch.utils.data import DataLoader# 定义数据转换
transform = transforms.Compose([transforms.ToTensor()])# 下载并加载 MNIST 数据集
train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
train_loader = DataLoader(train_dataset, batch_size=16, shuffle=True)# 查看 train_loader 中的数据
for i, (x, y) in enumerate(train_loader):print(f'Batch {i+1}')print(f'x: {x}') # x 是形状为 [batch_size, 1, 28, 28] 的图像张量print(f'y: {y}') # y 是形状为 [batch_size] 的标签张量print()# 如果只想查看一个批次的数据,可以在这里 breakbreak
在这个例子中,x 是一个形状为 [batch_size, 1, 28, 28] 的图像张量,y 是一个形状为 [batch_size] 的标签张量。每个批次的数据会被打印出来。
通过上述方法,您可以方便地查看 train_loader 中的 x 和 y 数据。如果您有更多问题或需要进一步的帮助,请告诉我!
相关文章:
【TORCH】查看dataloader里的数据,通过dataloader.dataset或enumerate
文章目录 dataloader.dataset示例代码使用自定义数据集使用 MNIST 数据集 说明 enumerate示例代码说明使用 MNIST 数据集的例子 dataloader.dataset 是的,您可以直接访问 train_loader 的数据集来查看数据,而不必通过 enumerate 遍历数据加载器。可以通…...
KDTree 简单原理与实现
介绍 K-D树是一种二叉树的数据结构,其中每个节点代表一个k维点,可用于组织K维空间中的点,其中K通常是一个非常大的数字。二叉树结构允许对多维空间中的点进行非常有效的搜索,包括最近邻搜索和范围搜索,树中的每个非叶…...
[c++] 可变参数模版
前言 可变参数模板是C11及之后才开始使用,学校的老古董编译器不一定能用 相信大家在刚入门c/c时都接触过printf函数 int printf ( const char * format, ... ); printf用于将数据格式化输出到屏幕上,它的参数非常有意思,可以支持任意数量,任意类型的多参数.而如果我们想实现类…...
QWidget窗口抗锯齿圆角的一个实现方案(支持子控件)2
QWidget窗口抗锯齿圆角的一个实现方案(支持子控件)2 本方案使用了QGraphicsEffect,由于QGraphicsEffect对一些控件会有渲染问题,比如列表、表格等,所以暂时仅作为研究,优先其他方案 在之前的文章中&#…...
数据结构之“队列”(全方位认识)
🌹个人主页🌹:喜欢草莓熊的bear 🌹专栏🌹:数据结构 前言 上期博客介绍了” 栈 “这个数据结构,他具有先进后出的特点。本期介绍“ 队列 ”这个数据结构,他具有先进先出的特点。 目录…...
密码学复习
目录 基础 欧拉函数 欧拉函数φ(n)定义 计算方法的技巧 当a=a_1*a_2*……*a_n时 欧拉定理 剩余系 一些超简单密码 维吉尼亚 密钥fox 凯撒(直接偏移) 凯特巴氏(颠倒字母表) 摩斯密码(字母对应电荷线) 希尔(hill)密码 一些攻击 RSA 求uf+vg=1 快速幂模m^…...
【文献解析】一种像素级的激光雷达相机配准方法
大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激…...
Http 实现请求body体和响应body体的双向压缩方案
目录 一、前言 二、方案一(和http header不进行关联) 二、方案二(和http header进行关联) 三、 客户端支持Accept-Encoding压缩方式,服务器就一定会进行压缩吗? 四、参考 一、前言 有时请求和响应的body体比较大,需要进行压缩,以减少传输的带宽。 二、方案一(和…...
C++(Qt)-GIS开发-简易瓦片地图下载器
Qt-GIS开发-简易瓦片地图下载器 文章目录 Qt-GIS开发-简易瓦片地图下载器1、概述2、安装openssl3、实现效果4、主要代码4.1 算法函数4.2 瓦片地图下载url拼接4.3 多线程下载 5、源码地址6、参考 更多精彩内容👉个人内容分类汇总 👈👉GIS开发 …...
誉天教育7月开班计划:为梦想插上腾飞的翅膀!
随着夏日的脚步渐近,誉天教育也迎来了新一轮的学习热潮。在这个充满活力和希望的季节里,我们精心策划了7月的开班计划,旨在为广大学子提供一个优质、高效的学习平台,助力他们追逐梦想,实现自我价值。 本月 Linux云计算…...
STM32基础篇:GPIO
GPIO简介 GPIO:即General Purpose Input/Output,通用目的输入/输出。就是一种片上外设(内部模块)。 对于STM32的芯片来说,周围有一圈引脚,有时需要对引脚进行读写(读:从外部输入一…...
HTTPS 发送请求出现TLS握手失败
最近在工作中,调外部接口,发现在clientHello步骤报错,服务端没有返回serverHello。 从网上找了写方法,都没有解决; 在idea的vm options加上参数: -Djavax.net.debugSSL,handshake 把SSL和handshake的日…...
数字化精益生产系统--IFS财务管理系统
IFS财务管理系统是一款功能丰富、高效且灵活的企业财务管理软件,广泛应用于多个行业和不同规模的企业中。以下是对IFS财务管理系统的功能设计:...
基于SpringBoot的校园台球厅人员与设备管理系统
本系统是要设计一个校园台球厅人员与设备管理系统,这个系统能够满足校园台球厅人员与设备的管理及用户的校园台球厅人员与设备管理功能。系统的主要功能包括首页、个人中心、用户管理、会员账号管理、会员充值管理、球桌信息管理、会员预约管理、普通预约管理、留言…...
免杀笔记 ---> Session0--DLL注入
刚更新完上一篇,于是我们就马不停蹄的去跟新下一篇!! Session0注入 :: 各位看官如果觉得还不错的可以给博主点个赞💕💕 这次,我把这个脚本直接传到Github上了 喜欢的师傅点个Star噢…...
如何做好IT类的技术面试?
我们在找工作时,需要结合自己的现状,针对意向企业做好充分准备。作为程序员,你有哪些面试IT技术岗的技巧? 方向一:分享你面试IT公司的小技巧 我分享一些基于广泛观察和用户反馈的面试IT公司的小技巧: 技术准…...
A7 配置方式Master SPI如何更改位宽
在 FPGA 完成自初始化后,INIT 释放,FPGA 对模式引脚 (M[2:0]) 进行采样,以确定使用哪种配置模式。当模式引脚 M[2:0] 001 时,FPGA 开始以大约 3 MHz 的频率在 CCLK 上输出时钟。随后,FCS_B 驱动为低电平,紧…...
linux kthread任务管理
目录 一、linux 创建内核线程1.1 kthread_create1.2 kthread_create_worker kthread_queue_work 二、设置线程优先级和调度策略2.1 sched_setscheduler2.2 调度策略 一、linux 创建内核线程 1.1 kthread_create 在 linux 中,可以使用 kthread_create 接口创建内核…...
第一节 网络安全概述
一.网络空间安全 网络空间:一个由信息基础设施组成相互依赖的网络。 ---- 海陆空天(大海、陆 地、天空、航天) 通信保密阶段 ---- 计算机安全 ----- 信息系统安全 ----- 网络空间安全 计算机安全:开始秉持着“严于律己&#x…...
星光云VR全景系统源码
星光云VR全景系统源码 体验地址请查看...
基础入门-版本控制-GitLab/Gitea 基本使用
GitLab/Gitea 基本使用 在前面的章节中,我们学习了 Git 基础命令和团队协作流程。在实际工作中,这些操作都是围绕着代码托管平台展开的。GitLab 和 Gitea 是两种广泛使用的自托管 Git 仓库管理工具,它们提供了仓库管理、权限控制、代码审查、CI/CD 等功能,是运维团队进行配…...
MogFace人脸检测工具实测:16GB显存下支持最高4096×2160分辨率单图检测
MogFace人脸检测工具实测:16GB显存下支持最高40962160分辨率单图检测 1. 引言:当高清图片遇上精准人脸检测 你有没有遇到过这样的场景?拿到一张几千人合影的高清大图,想快速找出某个特定人物,或者需要从监控录像的4K…...
从XML解析到特征提取:手把手搞定Wikipedia多模态数据集的预处理全流程
从XML解析到特征提取:Wikipedia多模态数据集预处理实战指南 引言 在机器学习项目中,数据预处理往往占据整个流程70%以上的工作量。特别是面对Wikipedia这类包含文本和图像的多模态数据集时,工程师需要同时处理XML文档解析、图像特征提取、跨模…...
37、三种事件处理方式优先级---------事件系统
三种事件处理方式优先级我们学习了三种是事件处理方式 1重写event函数 2重写具体的事件函数 3重写事件过滤器并安装 那么这三种方式,调用的顺序会怎么样呢? 我们还是在MainWindow中创建一个按钮,然后用三种方式捕获这个按钮的点击事件&#x…...
震惊!Claude Code 藏着 117 个大招,你竟然只用了 3 个?
每天免费领 1亿 Token,白嫖DeepSeek、GLM、MiniMax、Kimi等大模型! 我整个人都傻了! 大家伙平时用 Claude Code,是不是感觉它就一“高级聊天框”? 让他写段代码,它写;让他修个 Bug,它…...
fflate错误处理完全指南:如何优雅处理压缩异常
fflate错误处理完全指南:如何优雅处理压缩异常 【免费下载链接】fflate High performance (de)compression in an 8kB package 项目地址: https://gitcode.com/gh_mirrors/ff/fflate fflate是一个高性能的JavaScript压缩解压库,但在处理压缩数据时…...
Blender模型导入Unity材质丢失?5步搞定FBX材质完美迁移
Blender模型导入Unity材质丢失?5步搞定FBX材质完美迁移 当你花了数小时在Blender中精心雕琢模型材质,导出FBX到Unity后却发现材质全部丢失——这种崩溃感每个3D开发者都深有体会。材质丢失问题看似简单,实则涉及Blender与Unity两套完全不同的…...
告别抓包失败!保姆级配置:让Burp+Proxifier稳定抓取任意微信小程序
微信小程序抓包实战:BurpProxifier零失败配置指南 每次调试微信小程序接口都像在玩捉迷藏?明明按照教程一步步操作,却总在最后一步功亏一篑。作为经历过数十次抓包失败的过来人,我总结出一套"一次配置终身受用"的解决方…...
OpenClaw个人财务助手:Qwen3-14B分析消费记录生成报表
OpenClaw个人财务助手:Qwen3-14B分析消费记录生成报表 1. 为什么需要AI财务助手 上个月整理支付宝账单时,我盯着密密麻麻的消费记录发了半小时呆。餐饮、购物、交通的金额混在一起,根本分不清钱到底花在哪里。手动分类300多条记录后&#x…...
I2C总线原理与嵌入式系统应用实践
1. I2C总线基础解析I2C(Inter-Integrated Circuit)总线是Philips半导体(现NXP)在1982年推出的双线制串行通信协议。作为一名电子工程师,我在多个嵌入式项目中都深度使用过这种总线。它的精妙之处在于仅用两根线&#x…...
