DataLoader的基本概念
dataloader是数据加载器,每次从dataset中取数据
在dataloder中 只有dataset没有默认值
DataLoader的实际应用
数据预处理和打包
数据预处理在笔记01的基础上 用笔记01下载好的数据
以及完成数据的抓取打包
import torchvision
# 准备测试数据集
from torch.utils.data import DataLoader
test_data =torchvision.datasets.CIFAR10("./dataset",train=False,transform=torchvision.transforms.ToTensor())
test_loader= DataLoader(dataset=test_data,batch_size=4,shuffle=True,num_workers=0,drop_last=False) # num_workers=0表示只有一个主进程
# 测试数据集第一张图片及target
img,target=test_data[0] # target就是label
print(img.shape)
print(target)
# batch_size=4 每次打包4个数据 到test_loader中 shuffle=True 随机取
for data in test_loader:
imgs,targets=data
print(imgs.shape)
print(targets)
运行结果(部分)
把数据集从test_loader导入到tensorboard中
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=False) # num_workers=0表示只有一个主进程 drop_last=true的情况下 最后不足batch_size的那部分会舍去
# 测试数据集第一张图片及target
img,target=test_data[0] # target就是label
print(img.shape)
print(target)
writer=SummaryWriter("dataloder") #导包 数据已经是tensor类型 可以使用tensorboard
step=0
# batch_size=4 每次打包4个数据 到test_loader中 shuffle=True
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使用过程中 用的绝对路径是dataloder所在的文件夹 不是文件 dataloder文件夹是在SummaryWriter之后自动生成的 里面有你的日志文件夹
运行结果:
设置打包抓取,循环2次对比 在这种情况下shuffle=False,num_workers=0,drop_last=True
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=False,num_workers=0,drop_last=True) # num_workers=0表示只有一个主进程
# 测试数据集第一张图片及target
img,target=test_data[0] # target就是label
print(img.shape)
print(target)
writer=SummaryWriter("dataloder") #导包 数据已经是tensor类型 可以使用tensorboard
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
writer.close()