15 DataLoader的使用

一、dataset与dataloader的区别

  • dataset:数据集本身
  • dataloader:提取数据集的方式
    image

二、dataloader方法

  1. 方法查询和解析:

image

image
2. 参数:

  • batch_size:每次抓几张
  • shuffle:每次洗牌的顺序是否一样,True为不一样(一般情况),False为一样
  • num_workers:单个进程(设置为0)还是多个进程(大于0),多个进程比较快,但是容易报错(如下),就改为0
    image
  • drop_last:不能整除的部分,为True舍去,为False保留
  1. dataloader应用
  • 数据的imgs和targets

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

image

  • 随机抓取:

image

  • add_images()及相关参数的使用:
点击查看代码
import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

#测试集
test_data=torchvision.datasets.CIFAR10(root="./CIFAR10_dataset",transform=torchvision.transforms.ToTensor(),train=False,download=True)
test_loader=DataLoader(dataset=test_data,batch_size=64,shuffle=False,num_workers=0,drop_last=True)

#1. 查看图片信息
img,target=test_data[0]#测试数据集中的第一张图片和样本
print(img.shape)#查看形状
print(target)#查看分类

# #2. 数据的imgs和targets
# for data in test_loader:
#     imgs,targets=data
#     print(imgs.shape)
#     print(targets)

#3. 把batchsize改为64 进行展示
writer=SummaryWriter("logs_15")
step=0
for data in test_loader:
    imgs,targets=data
    # writer.add_images("test_data",imgs,step) #这个注意是添加images 而不是image
    writer.add_images("test_data_drop_last", imgs, step)  # 这个注意是添加images 而不是image
    

    step+=1 #控制执行几次

#4. 测试shuffle参数 看每次取样是否相同
for epoch in range(2):
    step=0
    for data in test_loader:
        imgs, targets = data
        writer.add_images("Epoch:{}".format(epoch),imgs,step)
        step += 1  # 控制执行几次
writer.close()

执行代码:

tensorboard --logdir=logs_15 --host=127.0.0.1

运行效果:

image

drop_last=False 的效果:
表示取余部分不去掉
image

drop_last=True 的效果:
表示取余部分去掉
image

shuffle=False的效果:
表示每次取样的图片都相同,但是一般情况下,令其为True
image

posted @   Trouvaille_fighting  阅读(360)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示

目录导航