Dataloader torch.utils.data.DataLoader全面详实概念理解
创始人
2024-03-25 13:31:24
0

torch.utils.data.DataLoader概念介绍

Data loader:

Combines a dataset and a sampler, and provides an iterable over the given dataset.:

  • Data loader: 是pytorch中用来处理模型输入数据的一个工具类
  • 组合了数据集(dataset) + 采样器(sampler)
  • 并在数据集上提供单线程和多线程的numworkersnum_workersnumw​orkers的可迭代对象。
    只要用pytorchpytorchpytorch,训练模型,往往都离不开torch.utils.data.DataLoader接口torch.utils.data.DataLoader接口torch.utils.data.DataLoader接口,其主要作用是将自定义数据读取接口的输出或者pytorch已有数据接口的输入,按照batchsizebatch sizebatchsize分装成TensorTensorTensor、后续只需要包装成VariableVariableVariable即可作为模型的输入。

按照batch size分装成tensor。

torch.utils.data.DataLoader(dataset, batch_size=1, shuffle=False, sampler=None,batch_sampler=None, num_workers=0, collate_fn=None,pin_memory=False, drop_last=False, timeout=0,worker_init_fn=None)
  • dataset(Dataset):加载数据的数据集。
  • batch_size(int,optional):每个batch加载多少个样本。
  • shuffle(bool,optional): 设置为True时,会在每个epoch,重新打乱数据(默认为:False).
  • sampler(Sampler,optional): 定义从数据集中提取样本的策略,即生成index的方式,可以顺序也可以乱序。
  • num_workers (int, optional):用多少个子进程加载数据,0:数据将在主进程中加载
  • collate_fn (callable, optional):将一个batch的数据和标签进行合并操作。
  • pin_memory (bool, optional):设置pin_memory=True,则意味着生成的Tensor数据最开始是属于内存中的锁页内存,这样将内存的Tensor转义到GPU的显存就会更快一些
  • drop_last (bool, optional):如果数据集大小不能被batch size整除,则设置为True,可删除最后一个不完整的batch,如果设为false。
    并且数据集大小不能被, batch size整除,则最后一个batch将会更小。默认为false.
  • timeout:用来设置数据读取的超时时间的,但超过这个时间还没有被读取的话就会报错。
  • worker_init_fn(callable, optional):如果不是None:将在播种之后和数据加载之前,对每个worker的子进程使用worker id (int in [0, num_workers - 1])作为输入调用。

如果设置为多进程读取数据,那么就会采用队列的方式来读,如果不是采用多进程来读取数据,那么就采用普通方式来读

案列

#案例 from https://blog.csdn.net/weixin_43981621/article/details/119685671
import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
# 准备的测试数据集  数据放在了CIFAR10文件夹下
test_data = torchvision.datasets.CIFAR10("./CIFAR10", train=False, transform=torchvision.transforms.ToTensor()
)test_loader = DataLoader(dataset=test_data, batch_size=4, shuffle=True, num_workers=0, drop_last=False
)
# 测试数据集中第一张图片及target
img, target = test_data[0]
print(img.shape)
print(target)# 输出
torch.Size([3, 32, 32])       # 3表示图像是RGB通道的,32*32的尺寸
3                             # 3表示图像的类别是3
# 设置参数batch_size=4时,每次取了4张照片,并获得4个targets标签。
# 在定义test_loader时,设置了batch_size=4,表示一次性从数据集中取出4个数据
for data in test_loader:imgs, targets = dataprint(imgs.shape)print(targets)# 输出
torch.Size([4, 3, 32, 32])  # 4 :batch_size = 4, RGB通道,H,W
tensor([8, 9, 1, 0])        # 表示一次性取出的4张图像的target信息

总结

慢慢的将该数据读取器给其搞定,慢慢的将其整理完整都行啦的样子与打算。

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...