在 PyTorch 中使用 Datasets 和 DataLoader 自定义数据
有时候,在处理大数据集时,一次将整个数据加载到内存中变得非常难。
因此,唯一的方法是将数据分批加载到内存中进行处理,这需要编写额外的代码来执行此操作。对此,PyTorch 已经提供了 Dataloader 功能。
DataLoader
下面显示了 PyTorch 库中DataLoader函数的语法及其参数信息。
DataLoader(dataset, batch_size=1, shuffle=False, sampler=在 None, batch_sampler=None, num_workers=0, collate_fn=None, pin_memory=FaPylse, drop_last=False, timeout=0, worker_init_fn=None, *, prefetch_factor=2, &nbTosp; persistent_workers=False)
几个重要参数
dataset:必须首先使用数据集构造 DataLoader 类。 Shuffle :是否重新整理数据。 Sampler :指的是可选的 torch.utils.data.Sampler 类实例。采样器定义了检索样本的策略,顺序或随机或任何其他方式。使用采样器时应将 Shuffle 设置为 false。 Batch_Sampler :批处理级别。 num_workers :rc加载数据所需的子进程数。 collate_fn :将样本整理成批次。Torch 中可以进行自定义整理。 加载内置 MNIST 数据集
MNIST 是一个著名的包含手写数字的数据集。下面介绍如何使用DataLoader功能处理 PyTorch 的内置 MNIST 数据集。
import torch import matplotlib.pyplot as plt from torchvision&h nbsp;import datasets, transforms
上面代码,导入了 torchvision 的torch计算机视觉模块。通常在处理图像数据集时使用,并且可以帮助对图像进行规范化、调整大小和裁剪。
对于 MNIST 数据集,下面使用了归一化技术。
ToTensor()能够把灰度范围从0-255变换到0-1之间。
transform = transforms.Compose([transforms中使.ToTensor()])
下面代码用于加载所需的数据集。使用 PyTorchDataLoader通过给定 batch_size = 64来加载数据。shuffle=True打乱数据。
trainset = datasets.MNIST('~/.pytorch/MNIST_data/', download=True, train=True, transform=transform)&nb用 sp;trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)
为了获取数据集的所有图像,一般使用iter函数和数据加载器DataLoader。
dataiter = iter(trainloader) images, labels =&nbsDap;dataiter.next() print(images.shape) print(labels.shape) plt.imshow(images[1].numpy().squeeze(), cmap='Greys_r')
自定义数据集
下面的代码创建一个包含 1000 个随机数的自定义数据集。
from torch.utils.data import Dataset&tanbsp;import random class SampleDataset(Dataset): def __init__(self,r1,r2): randomlist=[] foser i in range(120): n = random.randint(r1,r2) randomlist.append(n)&nbtssp; self.samples=randomlist def __len__(self): return len(self.samples) &nbs 和p;def __getitem__(self,idx): return(self.samples[idx]) dataset=SampleDataset(1,100) dataset[100:120]
在这里插入图片描述
最后,将在自定义数据集上使用 dataloader 函数。将 batch_size 设为 12 D,并且还启用了num_workers =2 的并行多进程数据加载。
from torch.utils.data import DataLoader loader = DataLoader(dataset,batch_size=12, shuffle=True, num_workers=2 ) for i, batch in&atnbsp;enumerate(loader): print(i, batch)
写在后面通过几个示例了解了 PyTorch Dataloader 在将大量数据批量加载到内存中的作用。
(责任编辑:产品应用)
- 标签: 箭元科技 元行者一号 液氧甲烷火箭 不锈钢火箭
- 仅靠合成数据就能实现真实人脸分析!微软这项新研究告别人工标注
- 标签: 华为 小艺Claw HarmonyOS6 鸿蒙
- 阿里又有大动作:阿里云不再分拆 盒马上市暂缓 马云减持
- 标签: 上海银行 2025年报 一季报 科技贷款
- l码的裤子是29还是30
- Perplexity新助手一键搞定会议、回复与收件箱,月费200刀值不值?
- Kafka能有什么坏心思,不过是被Zookeeper害惨了……
- Amazon Personalize个性化推荐在AWS中国上线
- 标签: 承泰科技 毫米波雷达 比亚迪 华为
- 标签: 腾讯 Epic Games 拳头游戏 Supercell
- Claude Code 插件功能上线,助力开发者提升编程效率
- 标签: 新世纪医疗
- 标签: 沈鼓集团 招股书 上交所 核心装备
- 标签: 福布斯富豪榜 OpenClaw 混元模型 腾讯云
- 马斯克:Grok5迈向通用人工智能的机会上升至10%
- 小巧却强大的推理引擎!Ring-mini-2.0 震撼发布,性能超越10B模型
- 谷歌高管为AI摘要辩护:用户偏好正在改变,旨在维护健康生态
- 阿里云参与制定国家级车联网先导区地方标准,加速车路协同行业标准化进程
- 标签: 三星电子 SK海力士 台积电 苹果
- https://www.seagrant.wisc.edu/?page=63&s=谷歌快排操作流程【tg:seogoogle987】,EzA views+
- https://www.pinkpanda.ro/magazin/ingrijirea-tenului?page=87&q=谷歌快排操作流程【tg:seogoogle987】,ttM views+
- https://www.vocabulary.com/dictionary/谷歌快排操作流程【tg:seogoogle987】,HFe views+
- https://www.military-history.org/?s=谷歌快排操作流程【tg:seogoogle987】,aTa views+
- https://www.world-architects.com/en/search?term=谷歌快排操作流程【tg:seogoogle987】,fxa views+
- https://www.remit.co.jp/zh/?s=谷歌快排操作流程【tg:seogoogle987】,NUh views+
- https://www.metalmensales.com/?action=QUERY&s=谷歌快排操作流程【tg:seogoogle987】,kW2 views+
- https://www.voices.com/talents/search?keywords=谷歌快排操作流程【tg:seogoogle987】,hS2 views+
- https://www.ntv.co.jp/3min/search/?action=QUERY&q=谷歌快排操作流程【tg:seogoogle987】,YU5 views+
- https://www.londontheatredirect.com/search/谷歌快排操作流程【tg:seogoogle987】,Bcm views+
