Pytorch学习--DataLoader的使用

一、DataLoader简介

DataLoader官网

重要参数:画红框的参数

  • dataset:
    • 作用:表示要加载的数据集。DataLoader通过该参数从数据集中读取数据。
    • 类型:Dataset,即PyTorch定义的Dataset类,用于封装数据并提供数据索引的功能。
  • batch_size:
    • 作用:指定每次加载的数据样本数量(即每个批次的数据量)。默认值为1。
    • 类型:int(可选),默认为1。设置为大于1的值时,可以加速训练,因为数据将被批量处理。
  • shuffle:
    • 作用:是否在每个epoch结束后打乱数据顺序。如果设置为True,数据会在每个epoch重新随机排列。默认值是False,即数据不打乱。
    • 类型:bool(可选),是否打乱数据。
  • sampler:
    • 作用:定义从数据集中提取数据的策略。可以传入一个Sampler类的实例,自定义数据抽样的方式。注意,如果指定了sampler,则不能再使用shuffle。
    • 类型:Sampler或Iterable(可选),用于控制数据抽样。
  • batch_sampler:
    • 作用:与sampler类似,但batch_sampler返回的是一批次的索引,而不是单个样本索引。此参数与batch_size、shuffle和drop_last互斥,不能同时使用。
    • 类型:Sampler或Iterable(可选),专门用于批次索引的抽样。
  • num_workers:
    • 作用:指定用于数据加载的子进程数量。0表示在主进程中进行数据加载。较大的值可以加速数据加载,但需要在进程间共享数据。
    • 类型:int(可选),默认为0。
  • drop_last:
    • 作用:是否丢弃最后一个未满批次的数据。当数据集的大小不能整除batch_size时,最后一个批次的大小可能会小于batch_size。如果将drop_last设为True,则丢弃这个不完整的批次。
    • 类型:bool(可选),默认为False。

二、代码初识

python 复制代码
import torchvision.datasets
from torch.utils.data import DataLoader

train_data=torchvision.datasets.CIFAR10(root="datasets",train=False,transform=torchvision.transforms.ToTensor(),download=True)
train_loader=DataLoader(dataset=train_data,batch_size=4,shuffle=True)

img,target=train_data[0]
print(img.shape)
print(target)

for data in train_loader:
    imgs,targets=data
    print(imgs.shape)
    print(targets)

因为这里采取的是随机抽样

三、使用tensorboard可视化

python 复制代码
import torchvision.datasets
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

train_data=torchvision.datasets.CIFAR10(root="datasets",train=False,transform=torchvision.transforms.ToTensor(),download=True)
#shuffle会在epoch中表现出来
train_loader=DataLoader(dataset=train_data,batch_size=4,shuffle=True)


img,target=train_data[0]
writer=SummaryWriter("logs")

step=0

for epoch in range(2):
    for data in train_loader:
        imgs,targets=data
        #注意:这里是add_images,不是add_image
        writer.add_images("epoch{}".format(epoch),imgs,step)
        step+=1
writer.close()
相关推荐
曲幽15 分钟前
FastAPI压力测试实战:Locust模拟真实用户并发及优化建议
python·fastapi·web·locust·asyncio·test·uvicorn·workers
Mintopia34 分钟前
OpenClaw 对软件行业产生的影响
人工智能
陈广亮1 小时前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能
会写代码的柯基犬1 小时前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
Mintopia2 小时前
OpenClaw 是什么?为什么节后热度如此之高?
人工智能
爱可生开源社区2 小时前
DBA 的未来?八位行业先锋的年度圆桌讨论
人工智能·dba
叁两5 小时前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
敏编程5 小时前
一天一个Python库:jsonschema - JSON 数据验证利器
python
前端付豪5 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain