DataLoader的用法

DataLoader可以将datasets中的数据打包抽取,生成batch_size便于深度学习训练。

具体用法如下:

import torchvision.datasets
from torch.utils.data import DataLoader

# 由于测试数据集数量较少,这里创建CIFAR10中的测试数据
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms

test_set = torchvision.datasets.CIFAR10('./dataset', train=False, transform=transforms.ToTensor(), download=True)

data_loader = DataLoader(dataset=test_set, batch_size=64, shuffle=True, num_workers=0, drop_last=True)
#  dataset= 为选择数据集, bach_size = 为一次抓取多少个数据, shuffle为每个epoch是否打乱顺序,num_worders= 为设置并行计算个数
#  drop_last= 为在数据集无法被bach_size整除时,剩下的数据是否抛弃,True为抛弃



writer = SummaryWriter('Data_loader')

# 对象调用和多个图片展示,通过打开CIFAR10的__getitem__函数可以知道返回的值为img和target
# 注意:data_loader不能用索引的方式返回值


indx = 1
for data in data_loader:
    imgs, targets = data
    writer.add_images('test', imgs, global_step=indx)  # 这里添加多个图片用add_images
    indx += 1


# 2次epoch
for epoch in range(2):
    indx = 1
    for data_1 in data_loader:
        imgs, targets = data_1
        writer.add_images('Epoch: {}'.format(epoch), imgs, global_step=indx)  # 这里添加多个图片用add_images
        indx += 1

# 这里用到格式化输出,即‘this is {}’.format()。  {}中的内容添加值

writer.close()

注意:

1、DataLoader实例化的对象不能用索引进行调用,可以用for循环调用,但是datasets可以;

2、这里用到格式化输出,例如‘this is {}’.format(a), a的值将被放在{}中。

3、shuffle用于将每次epoch的值打乱,drop_last将最后不能整除的剩余数据舍弃(drop_last=True)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值