• PyTorch 之 DataLoader


    DataLoader

    DataLoader 是 PyTorch 中读取数据的一个重要接口,该接口定义在 dataloader.py 文件中,该接口的目的: 将自定义的 Dataset 根据 batch size 的大小、是否 shuffle 等封装成一个 batch size 大小的 Tensor,用于后面的训练。

    通过 DataLoader,使得我们在准备 mini-batch 时可以多线程并行处理,这样可以加快准备数据的速度。

    DataLoader 是一个高效、简洁、直观地网络输入数据结构,便于使用和扩展

    • DataLoader 本质是一个可迭代对象,使用 iter() 访问,不能使用 next() 访问
    • 使用 iter(dataloader) 返回的是一个迭代器,然后使用 next() 访问
    • 也可以使用 for features, targets in dataloaders 进行可迭代对象的访问
    • 一般我们实现一个 datasets 对象,传入到 DataLoader 中,然后内部使用 yield 返回每一次 batch 的数据

    DataLoader(object) 的部分参数:

    # 传入的数据集
    dataset(Dataset)
    
    # 每个 batch 有多少个样本
    batch_size(int, optional)
    
    # 在每个 epoch 开始的时候,对数据进行重新排序
    shuffle(bool, optional)
    
    # 自定义从数据集中抽取样本的策略,如果指定这个参数,那么 shuffle 必须为 False
    sampler(Sampler, optional)
    
    # 与 sampler 类似,但是一次只返回一个 batch 的 indices(索引),如果指定这个参数,那么 batch_size, shuffle, sampler, drop_last 就不能再指定了
    batch_sampler(Sampler, optional)
    
    # 这个参数决定有多少进程处理数据加载,0 意味着所有数据都会被加载到主进程,默认为0
    num_workers(int, optional)
    
    # 如果设置为 True,则最后不足batch_size大小的数据会被丢弃,比如batch_size=64, 而一个epoch只有100个样本,则最后36个会被丢弃;如果设置为False,则最后的batch_size会小一点
    drop_last(bool, optional)
    

    Reference:

    1. pytorch之dataloader深入剖析
  • 相关阅读:
    奋力拼搏,永不言弃
    软件工程最终总结
    人生第一次JAVA编程,电梯(并不算完成版),以及IDEA里使用git
    尝试单元测试
    作业2的回答
    word count程序,以及困扰人的宽字符与字符
    关于未成品的问题:字符类型和其他种种
    随手一写,简单的四则运算练习
    浏览器缓存分析
    Codeforces Round #582 (Div. 3)
  • 原文地址:https://www.cnblogs.com/xxxxxxxxx/p/11428770.html
Copyright © 2020-2023  润新知