美文网首页
DataLoader的使用

DataLoader的使用

作者: 过气海豹 | 来源:发表于2021-10-04 19:45 被阅读0次

    1 DataLoader的作用

    简单来说,DataLoader就是数据加载器,结合了数据集和取样器,并且可以提供多个线程处理数据集。在训练模型时使用到此函数,用来把训练数据分成多个小组,此函数每次抛出一组数据。直至把所有的数据都抛出。就是做一个数据的初始化。
    在实践中,数据读取经常是训练的性能瓶颈,特别当模型较简单或者计算硬件性能较高时。Pytorch的Dataloader中一个很方便的功能是允许使用多进程来加速数据读取,我们可以通过num_workers来设置使用几个进程读取数据。

    dataset和dataloader

    2 DataLoader的使用

    from torch.utils.data import DataLoader
    test_loader = DataLoader(dataset=test_data,batch_size=64,shuffle=True,num_workers=0,drop_last=False)
    

    参数解释:
    dataset:要取的数据集,一般要返回img和label
    batch_size:每次从dataset中取多少数据进行打包
    shuffle:是否打乱数据
    num_workers:加载数据的时候采用单进程还是多进程,默认设置为0,意为采用主进程进行加载
    *注:num_works在windows中会偶尔出现问题,如果遇到workerror可以考虑将num_works设置为0
    drop_last:当数据集最后一批小于batch_size时,是否舍去最后一批数据集

    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)
    img, target = test_data[0]
    writer = SummaryWriter("../logs/P11_logs")
    step = 0
    for data in test_loader:
        imgs, target = data
        writer.add_images("test_data",imgs,step)
        step = step+1
    writer.close()
    

    结果:


    DataLoader

    如果增加epoch,并将shuffle设置为False,drop_last设置为True:

    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)
    img, target = test_data[0]
    writer = SummaryWriter("../logs/P11_logs")
    for epoch in range(2):
        step = 0
        for data in test_loader:
            imgs, target = data
            writer.add_images("epoch:{}".format(epoch),imgs,step)
            step = step+1
    writer.close()
    
    增加epoch.png

    将shuffle设置为True后的结果:


    打乱.png

    参考资料:
    1.https://www.bilibili.com/video/BV1hE411t7RN?p=15&spm_id_from=pageDriver
    2.https://blog.csdn.net/csdn_of_ding/article/details/109138049
    3.https://zhuanlan.zhihu.com/p/234825890

    相关文章

      网友评论

          本文标题:DataLoader的使用

          本文链接:https://www.haomeiwen.com/subject/dtqbnltx.html