Dataloader的使用

文章目录

Dataloder官方文档
Dataloader的使用示例代码如下:

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

# 准备的测试数据集
test_data = torchvision.datasets.CIFAR10(root="./CIFAR10",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)
'''
batch_size:每次取多少个数据进行处理
shuffle:第二次循环取数据时,顺序是否打乱,True为打乱
num_workers:选用进程的数量
drop_last:是否将尾部多余的数据除去,True为除去
'''
# 测试数据集中的第一张图片及分类结果
img,target = test_data[0]
print(img.shape)
print(target)

writer = SummaryWriter("logs")
step = 0

# 前提batch_size=4
for data in test_loader:
    imgs,targets = data
    # 例:torch.Size([4, 3, 32, 32]) 4代表4张图片 3代表图片的通道数 大小为32*32的图片
    print(imgs.shape)
    # 例:tensor([3, 1, 9, 0]) 四张图片的类别
    print(targets)

    # 使用tensorboard进行可视化
    writer.add_images("test_data",imgs,step)   # 注意这里使用的是add_images而不是add_image哦,因为imgs是4个tensor数据类型图片的集合
    step+=1

writer.close()

上述代码运行结果在tensorboard可视化:
在这里插入图片描述
在这里插入图片描述
每步都是4张,这里也可以看出dataloader中batch_size参数的作用了吧!

在这里插入图片描述
dataloader中batch_size的作用就相当于将dataset打包,每次取整个被打包的部分进行后续操作,上图可以方便理解,将batch_size设置的值的图片数量(img)和分类结果(target)分别打包成imgs,targets。

上述代码中要注意的地方:

  • writer.add_images(“test_data”,imgs,step) # 注意这里使用的是add_images而不是add_image哦,因为imgs是4个tensor数据类型图片的集合
  • 学会看官方文档:Dataloder官方文档

猜你喜欢

转载自blog.csdn.net/booze_/article/details/125431555