目录
1.torch.utils.data.DataLoader概念介绍
2.torch.utils.data.DataLoader参数介绍
DataLoader:[batch_sizeN, C, H, W]+[Target1, Target2, ......., TargetN] ?
Data loader. Combines a dataset and a sampler, and provides an iterable over the given dataset.
只要用PyTorch训练模型,往往都离不开torch.utils.data.DataLoader接口,其主要作用就是将自定义的数据读取接口的输出或者PyTorch已有的数据接口的输入按照batch size分装成Tensor,后续只需要在包装成Variable即可作为模型的输入。
From:PyTorch源码解读之torch.utils.data.DataLoader
- 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)
如果设置为多进程读取数据,那么就会采用队列的方式来读,如果不是采用多进程来读取数据,那就采用普通方式来读。
- #案例 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 = data
- print(imgs.shape)
- print(targets)
-
- # 输出
- torch.Size([4, 3, 32, 32]) # 4 :batch_size = 4, RGB通道,H,W
- tensor([8, 9, 1, 0]) # 表示一次性取出的4张图像的target信息
PyTorch源码解读之torch.utils.data.DataLoader
pytorch-DataLoader(数据迭代器)_数据迭代器