【Pytorch】小土堆自学日记(五)

一、DataLoader的使用

1、dataset和dataloader的区别(以扑克牌为例):

①dataset:告诉程序,数据集的位置,数据集的第某个数据(相当于一沓扑克

②dataloader:加载器,把数据加载到神经网络(手相当于神经网络,去dataset里取数据

2.参数解释:

3.dataloader的打包过程:

dataset中的数据形式返回的是(img,target)

dataloader打乱后取四个,将img和target分别打包形成imgs和targets

4.dataloader返回值:

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

第一个输出:选取了四张照片,三通道,32*32

第二个输出:将target打包

5.实践代码:

①代码:

import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

#准备的测试数据集
test_data = torchvision.datasets.CIFAR10(root = "D:\\learn_pytorch\\dataset",train=False,transform=torchvision.transforms.ToTensor())

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)
print(target)

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

writer.close()

终端输入下面代码打开tensorboard

tensorboard --logdir="dataloader"

②结果显示:

最后一张比较特殊:由于drop_last是false

③将drop_last修改为True再运行:

舍去了一些图片

④提取两轮数据,且不打乱(洗牌)

代码:

import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

#准备的测试数据集
test_data = torchvision.datasets.CIFAR10(root = "D:\\learn_pytorch\\dataset",train=False,transform=torchvision.transforms.ToTensor())

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)
print(target)

writer = SummaryWriter("Dataloader1")
#提取两轮,两轮一样
for epoch in range(2):
    step = 0
    for data in test_loader:
       imgs,targets = data
       # print(imgs.shape)
       print(targets)
       writer.add_images("Epoch:{}".format(epoch),imgs,step)
       step = step+1

writer.close()

结果: 

⑤提取两轮数据,打乱:

代码:修改shuffle参数,大多情况shuffle为True

import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

#准备的测试数据集
test_data = torchvision.datasets.CIFAR10(root = "D:\\learn_pytorch\\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)
print(target)

writer = SummaryWriter("Dataloader1")
#提取两轮,两轮一样
for epoch in range(2):
    step = 0
    for data in test_loader:
       imgs,targets = data
       # print(imgs.shape)
       print(targets)
       writer.add_images("Epoch:{}".format(epoch),imgs,step)
       step = step+1

writer.close()

结果(上下图片不同):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值