torchvision数据集及DataLoader的使用

发布时间:2026/7/13 4:10:41
torchvision数据集及DataLoader的使用 本文主要介绍torchvision内置数据集及DataLoader使用文章目录一、CIFAR10 数据集初识举例1.一句话理解2.CIFAR10 数据档案3.数据集下载二、查看数据集内容1.基本操作2.数据结构三、与 transforms 联动四、DataLoader — 从一副牌到一手牌1.为什么要 DataLoader2.基本用法五、DataLoader 参数速查表总结一、CIFAR10 数据集初识举例1.一句话理解以前要手动写 Dataset 类现在 torchvision 帮你把常用数据集都封装好了一行代码下载 加载。2.CIFAR10 数据档案属性数值总样本数60,000 张训练集 / 测试集50,000 / 10,000图像尺寸32×32 像素RGB 三通道类别10 类飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船、卡车3.数据集下载importtorchvision animals_transformtorchvision.transforms.Compose([torchvision.transforms.ToTensor()])train_settorchvision.datasets.CIFAR10(root./animals,#存在哪trainTrue,## True训练集, False测试集downloadTrue)# 自动下载已有则跳过test_settorchvision.datasets.CIFAR10(root./animals,trainFalsedownloadTrue)参数含义root数据集存放目录trainTrue 训练集 / False 测试集downloadTrue 自动下载transform预处理转换二、查看数据集内容1.基本操作代码如下示例# 查看所有类别名print(test_set.classes)# [airplane, automobile, bird, cat, deer,# dog, frog, horse, ship, truck]# 取第 0 个样本img,targettest_set[0]print(img)# PIL.Image.Image modeRGB size32x32print(target)# 3数字标签print(test_set.classes[target])# catimg.show()# 弹窗显示图片2.数据结构test_set[0] → (PIL图片, 数字标签)↓ ↓32×32 RGB 0~9 整数三、与 transforms 联动CIFAR10 给的是 PIL Image必须转成 Tensor 才能训练。fromtorchvisionimporttransforms# 定义转换管道dataset_transformtransforms.Compose([transforms.ToTensor()# PIL → Tensor (C, H, W)])# 下载时直接应用 transformtrain_settorchvision.datasets.CIFAR10(root./dataset,trainTrue,transformdataset_transform,# ← 关键参数downloadTrue)CIFAR10 原始数据 (PIL) ──transform──▶ Tensor (可直接训练)四、DataLoader — 从一副牌到一手牌1.为什么要 DataLoaderDataset一副牌DataLoader抓牌器告诉你总共有多少张牌每次抓多少张batch_size可以一张一张拿是否洗牌shuffle返回 (图片, 标签)返回批量 (图片们, 标签们)模型不吃一张图要吃一批图。DataLoader 就是那个打包工人。2.基本用法fromtorch.utils.dataimportDataLoader test_loaderDataLoader(datasettest_data,batch_size64,# 一次抓 64 张shuffleTrue,# 打乱顺序num_workers0,# Windows 下必须设为 0drop_lastFalse# 最后不足 64 张也保留)遍历 DataLoaderforimgs,targetsintest_loader:print(imgs.shape)# torch.Size([64, 3, 32, 32])print(targets.shape)# torch.Size([64])break结合 TensorBoard 可视化fromtorch.utils.tensorboardimportSummaryWriter writerSummaryWriter(dataloader_logs)forepochinrange(2):# 跑两轮观察 shuffle 效果forstep,(imgs,targets)inenumerate(test_loader):writer.add_images(fEpoch_{epoch},imgs,step)writer.close()终端输入tensorboard --logdirdataloader_logs五、DataLoader 参数速查表参数作用建议值dataset指定数据集必填batch_size每批多少张图32 / 64 / 128shuffle是否打乱训练True测试Falsenum_workers多进程加载Windows 必须设为 0drop_last丢弃最后不完整的 batch一般 False总结本文主要介绍了怎么使用torchvision的数据集以及DataLoader。