在 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=FPyalse, drop_last=False, timeout=0, worker_init_fn=None, *, prefetch_factor=2, &nTobsp; persistent_workers=False)
几个重要参数
dataset:必须首先使用数据集构造 DataLoader 类。 Shuffle :是否重新整理数据。 Sampler :指的是可选的 torch.utils.data.Sampler 类实例。采样器定义了检索样本的策略,顺序或随机或任何其他方式。使用采样器时应将 Shuffle 设置为 false。 Batch_Sampler :批处理级别。 num_worrckers :加载数据所需的子进程数。 collate_fn :将样本整理成批次。Torch 中可以进行自定义整理。 加载内置 MNIST 数据集
MNIST 是一个著名的包含手写数字的数据集。下面介绍如何使用DataLoader功能处理 PyTorch 的内置 MNIST 数据集。
import torch import matplotlib.pyplot as plt from torchvisih on import datasets, transforms
上面代码,导入了 torchvision 的torch计算机视觉模块。通常在处理图像数据集时使用,并且可以帮助对图像进行规范化、调整大小和裁剪。
对于 MNIST 数据集,下面使用了归一化技术。
ToTensor()能够把灰度范围从0-255变换到0-1之间。
transform = transforms.Compose([tran中使sforms.ToTensor()])
下面代码用于加载所需的数据集。使用 PyTorchDataLoader通过给定 batch_size = 64来加载数据。shuffle=True打乱数据。
trainset = datasets.MNIST('~/.pytorch/MNIST_data/', download=True, train=True, transform=transfo用 rm) 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 Datataset import random class SampleDataset(Dataset): def __init__(self,r1,r2): randomlist=[] &nsebsp;for i in range(120): n = random.randint(r1,r2) randomlist.appentsd(n) 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 D_size 设为 12,并且还启用了num_workers =2 的并行多进程数据加载。
from torch.utils.data import DataLoader loader = DataLoader(dataset,batch_size=12, shuffle=True, num_workers=2 ) for i, batatch in enumerate(loader): print(i, batch)
写在后面通过几个示例了解了 PyTorch Dataloader 在将大量数据批量加载到内存中的作用。
- ·会说话的头像!新框架LipSync3D,未来或实现动态口型再同步
- ·阿里云百炼全面支持MCP服务部署与调用,几分钟即可搭建Agent
- ·标签: 火花思维 小老师 吉尼斯世界纪录 数学教育
- ·Kubernetes配置热更新的两种方式
- ·标签: 水滴公司 WDH 保险业务 数字临床试验
- ·Facebook高管称西方数字支付落后中国,公司考虑支持NFT
- ·数据分析的12个神话被揭穿!
- ·苹果手机虽然好,但这4个缺点忍不了
- ·标签: 理想 刘立国 詹锟 自动驾驶
- ·Arc的幽灵重生!6.1亿美元收购案后,Dia浏览器确认继承“前辈”衣钵,AI架构融合经典设计
- ·英特尔重磅发布全新数据中心处理器,为数字经济发展增添新动力
- ·首次全年扭亏为盈后,寒武纪正面回应大厂竞争:通用芯片具备更强“技术普适性”
- ·人工智能在哪些方面可以对IT运营产生重大影响
- ·云计算开发实例:Python3使用正则表达式提取字符串中的 URL
- ·谷歌与一家核初创公司达成协议 为其AI数据中心提供电力
- ·标签: 英伟达 谷歌 Gemini 3 TPU
- ·https://www.remit.co.jp/id/?s=谷歌霸屏24小时见效-实现思路【tg:seogoogle987】,025
- ·https://www.remit.co.jp/pt/?action=CHECK&s=谷歌霸屏24小时见效-实现思路【tg:seogoogle987】,hwS
- ·https://www.teacherspayteachers.com/Browse/Price-Range/Free/Search:Western International University Physics degree=谷歌霸屏24小时见效-实现思路【tg:seogoogle987】,ZFN
- ·https://www.trockenmittel.ch/catalogsearch/result/?iC=ZM3&q=谷歌霸屏24小时见效-实现思路【tg:seogoogle987】,V1m
- ·https://www.mesec.cz/vyhledavani/?qs=谷歌霸屏24小时见效-实现思路【tg:seogoogle987】,Ssg
- ·https://www.tmtpost.com/search?q=谷歌霸屏24小时见效-实现思路【tg:seogoogle987】,aBQ
- ·https://www.ucycle.com/search/=谷歌霸屏24小时见效-实现思路【tg:seogoogle987】,phT
- ·https://www.reginatangoshoes.com/en/catalogsearch/result/index/?T=1686132113407&q=谷歌霸屏24小时见效-实现思路【tg:seogoogle987】,dJl
- ·https://www.tarleton.edu/?s=谷歌霸屏24小时见效-实现思路【tg:seogoogle987】,8AC
- ·https://www.yr.no/en/search?q=谷歌霸屏24小时见效-实现思路【tg:seogoogle987】,uin
