【PyTorch教程】P15 dataloader的使用

本文详细介绍了如何使用PyTorch的DataLoader加载CIFAR10数据集,包括设置参数如num_workers为0以避免多进程问题,并展示了如何使用TensorBoard进行数据可视化。此外,还强调了在数据加载过程中理解数据集返回内容的重要性,并给出了使用SummaryWriter添加图像到TensorBoard的示例。
摘要由CSDN通过智能技术生成

P15 dataloader的使用

  • 在选择是否多进程导入数据时,num_worker设置为0,即为单线程。
  • 如果出现这个报错,试试把num_work置为0:
    在这里插入图片描述
  • CIFAR数据集的固定返回内容:
    在这里插入图片描述

可以运行的代码

# !usr/bin/env python3
# -*- coding:utf-8 -*-

"""
author :24nemo
 date  :2021年07月07日
"""

import torchvision

# 准备的测试数据集
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

test_data = torchvision.datasets.CIFAR10("./dataset", train=False, transform=torchvision.transforms.ToTensor())

test_loader = DataLoader(dataset=test_data, batch_size=64, shuffle=True, num_workers=0, drop_last=True)

# 测试数据集中第一张图片及target
img, target = test_data[0]
print(img.shape)  # torch.Size([3, 32, 32]) 单张图片的尺寸和通道数
print(target)  # 输出为 3

writer = SummaryWriter("dataloader")
# 测试数据集上所有的图片 imgs 是复数
for epoch in range(2):  # 进行两轮,上面的 shuffle,是对这个位置有影响,而不是 for data 那个循环有影响
    step = 0
    for data in test_loader:  # 这个loader,返回的内容,就已经是包含了 img 和 target 两个值了,这个在 cifar 数据集的 getitem 函数里,写了
        imgs, targets = data
        # print(imgs.shape)   # torch.Size([4, 3, 32, 32]) 这个输出的结果,其中的 4 ,是 batch_size 设定的值, 后面的 3, 32, 32 是单张图片的尺寸和通道数
        #  print(targets)  # tensor([2, 8, 0, 2])  这4个数字,是对 target 的打包,是随机的,数值代表所在的分类;debug一下,可以看到 sampler中的取值方式,是 RandomSampler
        #  随机从 Data 中,抓取 4 个数据
        writer.add_images("Epoch: {}".format(epoch), imgs, step)
        step = step + 1

writer.close()

2023.7.18补充内容:

  • 当不知道在数据集的返回内容时,Ctrl点进cifar数据集getitem介绍,里面的return说的很清楚。上面有一张图,说了这个问题。
import torchvision
from torch.utils.data import DataLoader

test_data = torchvision.datasets.CIFAR10(root="dataset", train=False, transform=torchvision.transforms.ToTensor(), download=True)

test_loader = DataLoader(dataset=test_data, batch_size=4, shuffle=True, num_workers=0, drop_last=False)

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

for data in test_loader:
    img, targets = data
    print(img.shape)
    print(target)
  • 注意
    writer.add_images 必须是复数,并且,加上dataformats="NHWC"
  • writer.add_images(‘test_data’, imgs, step, dataformats=“NHWC”)<这个问题遇到了再说>
import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

test_data = torchvision.datasets.CIFAR10(root="dataset", train=False, transform=torchvision.transforms.ToTensor(), download=True)

test_loader = DataLoader(dataset=test_data, batch_size=64, shuffle=True, num_workers=0, drop_last=False)

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


writer = SummaryWriter('dataloader')
step = 0
for data in test_loader:
    imgs, targets = data
    # print(imgs.shape)
    # print(target)
    writer.add_images('test_data', imgs, step, dataformats="NHWC")
    step += 1

writer.close()
  • 实现了,以前看起来很多困难,现在也不那么难了
  • 同样地,打开的时候添加的是绝对路径在这里插入图片描述- drop_lastTrueFalse:
    在这里插入图片描述

完整目录

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值