torchvision数据集及DataLoader的使用
2026/7/13 4:10:15 网站建设 项目流程

本文主要介绍torchvision内置数据集及DataLoader使用

文章目录

  • 一、CIFAR10 数据集初识(举例)
    • 1.一句话理解
    • 2.CIFAR10 数据档案
    • 3.数据集下载
  • 二、查看数据集内容
    • 1.基本操作
    • 2.数据结构
  • 三、与 transforms 联动
  • 四、DataLoader — 从"一副牌"到"一手牌"
    • 1.为什么要 DataLoader?
    • 2.基本用法
  • 五、DataLoader 参数速查表
  • 总结

一、CIFAR10 数据集初识(举例)

1.一句话理解

以前要手动写 Dataset 类,现在 torchvision 帮你把常用数据集都封装好了,一行代码下载 + 加载。

2.CIFAR10 数据档案

属性数值
总样本数60,000 张
训练集 / 测试集50,000 / 10,000
图像尺寸32×32 像素,RGB 三通道
类别10 类(飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船、卡车)

3.数据集下载

importtorchvision animals_transform=torchvision.transforms.Compose([torchvision.transforms.ToTensor()])train_set=torchvision.datasets.CIFAR10(root="./animals",#存在哪train=True,## True=训练集, False=测试集download=True)# 自动下载,已有则跳过test_set=torchvision.datasets.CIFAR10(root="./animals",train=False,download=True)
参数含义
root数据集存放目录
trainTrue 训练集 / False 测试集
downloadTrue 自动下载
transform预处理转换

二、查看数据集内容

1.基本操作

代码如下(示例):

# 查看所有类别名print(test_set.classes)# ['airplane', 'automobile', 'bird', 'cat', 'deer',# 'dog', 'frog', 'horse', 'ship', 'truck']# 取第 0 个样本img,target=test_set[0]print(img)# <PIL.Image.Image mode=RGB size=32x32>print(target)# 3(数字标签)print(test_set.classes[target])# 'cat'img.show()# 弹窗显示图片

2.数据结构

test_set[0] → (PIL图片, 数字标签)
↓ ↓
32×32 RGB 0~9 整数

三、与 transforms 联动

CIFAR10 给的是 PIL Image,必须转成 Tensor 才能训练。

fromtorchvisionimporttransforms# 定义转换管道dataset_transform=transforms.Compose([transforms.ToTensor()# PIL → Tensor (C, H, W)])# 下载时直接应用 transformtrain_set=torchvision.datasets.CIFAR10(root="./dataset",train=True,transform=dataset_transform,# ← 关键参数download=True)

CIFAR10 原始数据 (PIL) ──transform──▶ Tensor (可直接训练)

四、DataLoader — 从"一副牌"到"一手牌"

1.为什么要 DataLoader?

Dataset(一副牌)DataLoader(抓牌器)
告诉你总共有多少张牌每次抓多少张(batch_size)
可以一张一张拿是否洗牌(shuffle)
返回 (图片, 标签)返回批量 (图片们, 标签们)
模型不吃"一张图",要吃"一批图"。DataLoader 就是那个打包工人。

2.基本用法

fromtorch.utils.dataimportDataLoader test_loader=DataLoader(dataset=test_data,batch_size=64,# 一次抓 64 张shuffle=True,# 打乱顺序num_workers=0,# Windows 下必须设为 0drop_last=False# 最后不足 64 张也保留)

遍历 DataLoader

forimgs,targetsintest_loader:print(imgs.shape)# torch.Size([64, 3, 32, 32])print(targets.shape)# torch.Size([64])break

结合 TensorBoard 可视化

fromtorch.utils.tensorboardimportSummaryWriter writer=SummaryWriter("dataloader_logs")forepochinrange(2):# 跑两轮,观察 shuffle 效果forstep,(imgs,targets)inenumerate(test_loader):writer.add_images(f"Epoch_{epoch}",imgs,step)writer.close()

终端输入
tensorboard --logdir=dataloader_logs

五、DataLoader 参数速查表

参数作用建议值
dataset指定数据集必填
batch_size每批多少张图32 / 64 / 128
shuffle是否打乱训练=True,测试=False
num_workers多进程加载Windows 必须设为 0
drop_last丢弃最后不完整的 batch一般 False

总结

本文主要介绍了怎么使用torchvision的数据集以及DataLoader。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询