数据预处理——dataloader返回值

准备数据集

使用CIFAR10数据集,dataloader的batchsize为4

test_set = torchvision.datasets.CIFAR10("../dataset_transform",train=False,transform=torchvision.transforms.ToTensor(),download=True)
test_loader = DataLoader(dataset=test_set,batch_size=4,shuffle=True,num_workers=0,drop_last=False)

DataLoader 中,每次 iter 调用(例如 for data in dataloader)将返回一个批次数据(这里一个批次包含四个数据)。根据定义的数据集的样式,这些元组可能包含一个或多个数据集的输入和目标(这里是四个img、target),返回时是将imgs一起打包返回,不是一个img一个target打包返回。dataloder的数据排列结构如下(按顺序取数据)
在这里插入图片描述

返回dataloader结果

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

在这里插入图片描述
torch.Size([4,3,32,32]):4个数据,3通道,图片大小32*32
tensor([2,3,6,8])是4个target的打包(target是图片类别对应的序号)

字典格式存储的dataloader如何取结果

datasets.ImageFolder读取本地数据

root_dir = "E:\\todo\\dataset"
train_dir = root_dir+"/train"
valid_dir = root_dir+"/valid"
data_transforms = {"train":transforms.ToTensor(),"valid":transforms.ToTensor()}
img_datasets = {x:datasets.ImageFolder(os.path.join(root_dir,x),data_transforms[x]) for x in ['train','valid']}

装载数据,使用字典形式存储,key为train、valid

batch_size = 1
dataloaders = {x: torch.utils.data.DataLoader(img_datasets[x],batch_size=batch_size,shuffle=True) for x in['train','valid']}

第一层for循环先按key读取字典方式获取对应value(value为Dataloader类型),第二层for循环遍历value,读取方式和上文读取dataloader方式一样

# i=tain/valid
for i in dataloaders:
    for data in dataloaders[i]:
        img,target = data
        print(img)
        print(target)
    print("-----------------------------------------------------------------------------------------------------------------")

batchsize为1,即返回一张图片的img和target,结果分隔线上面为train数据集的imgs、targets,下面为valid数据集图片信息
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值