PyTorch-DataLoader

DataLoader:从Dataset中取数据,怎么取,每次取多少可以由DataLoader中的参数进行设定,并将数据加载到神经网络中。

dataloader.py

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())
# 1.batch_size:每次取几个数据
# 2.shuffle:是否要打乱顺序
# 3.num_workers:进程数
# 4.drop_last:如9/4=2...1,若为True则最后一个不要了,若为False则最后一个数据也要。
test_loader = DataLoader(dataset=test_data, batch_size=64, shuffle=True, num_workers=0, drop_last=False)
# 测试集中的第一张图片以及target
img, target = test_data[0]
# print(img.shape, target)  # torch.Size([3, 32, 32]) 3
# print(test_data.classes[target])  # cat

writer = SummaryWriter('cifar10')
step = 0
for data in test_loader:
    imgs, targets = data
    writer.add_images('dataloader', imgs, step)
    step = step + 1
# for循环里的imgs是四张图片叠加在一起,所以用add_images
# torch.Size([4, 3, 32, 32]) tensor([0, 6, 0, 4])...
# torch.Size([4,3,32,32])-4张图,3通道,32×32大小的图片
writer.close()

result:

当drop_last为False时,最后一步的情况: 

 

当drop_last为True时,最后一步的情况(只进行到155步): 

 

进行两轮,且若shuffle为False时:

dataloader.py

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())
# 1.batch_size:每次取几个数据集
# 2.shuffle:是否要打乱顺序
# 3.num_workers:进程数
# 4.drop_last:如9/4=2...1,若为True则最后一个不要了,若为False则最后一个数据也要。
test_loader = DataLoader(dataset=test_data, batch_size=64, shuffle=False, num_workers=0, drop_last=True)
# 测试集中的第一张图片以及target
img, target = test_data[0]
# print(img.shape, target)  # torch.Size([3, 32, 32]) 3
# print(test_data.classes[target])  # cat

writer = SummaryWriter('cifar10')
for epoch in range(2):
    step = 0
    for data in test_loader:
        imgs, targets = data
        writer.add_images('Epoch:{}'.format(epoch), imgs, step)
        step = step + 1
# for循环里的imgs是四张图片叠加在一起,所以用add_images
# torch.Size([4, 3, 32, 32]) tensor([0, 6, 0, 4])...
# torch.Size([4,3,32,32])-4张图,3通道,32×32大小的图片
writer.close()

若shuffle改为True:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值