PyTorch_dataloader
最近了解torch时,发现dataloader不懂,所以写一篇博客,以此记录一下。
官方链接:https://pytorch.org/docs/stable/data.html?highlight=torch%20utils%20data%20dataloader#torch.utils.data.DataLoader

- Dataloader将Dataset或其子类封装成一个迭代器
- 这个迭代器可以迭代输出Dataset的内容
- 同时可以实现多进程、shuffle、不同采样策略,数据校对等等处理过程
Dataset是一个包装类,用来将数据包装为Dataset类,然后传入DataLoader中,我们再使用DataLoader这个类来更加快捷的对数据进行操作。
DataLoader(dataset, batch_size=1, shuffle=False, sampler=None,
           batch_sampler=None, num_workers=0, collate_fn=None,
           pin_memory=False, drop_last=False, timeout=0,
           worker_init_fn=None, *, prefetch_factor=2,
           persistent_workers=False)
其中dataset就是我们封装好的数据集
- 
batch_size ( int , optional ) – 每批要加载多少样本(默认值:) 1。
- 
shuffle(布尔,可选) -设置为 True有数据在每个时间段改组(默认:False)。
- 
sampler ( Sampler or Iterable , optional ) – 定义从数据集中抽取样本的策略。可以是任何 Iterable与__len__实施。如果指定,则shuffle不得指定。
- 
batch_sampler ( Sampler or Iterable , optional ) – 类似 sampler,但一次返回一批索引。互斥有batch_size,shuffle,sampler,和drop_last。
- 
num_workers ( int , optional ) – 用于数据 加载的子进程数。 0意味着数据将在主进程中加载。(默认值:0)
- 
collate_fn ( callable , optional ) – 合并一个样本列表以形成一个小批量的 Tensor(s)。在使用地图样式数据集的批量加载时使用。 
- 
pin_memory ( bool , optional ) – 如果 True,数据加载器将在返回之前将张量复制到 CUDA 固定内存中。如果您的数据元素是自定义类型,或者您collate_fn返回的批次是自定义类型,请参见下面的示例。
- 
drop_last ( bool , optional ) – True如果数据集大小不能被批处理大小整除,则设置为删除最后一个不完整的批处理。如果False并且数据集的大小不能被批大小整除,那么最后一批将更小。(默认值:False)
- 
timeout ( numeric , optional ) – 如果为正,则为从工作人员收集批次的超时值。应该总是非负的。(默认值: 0)
- 
worker_init_fn ( callable , optional ) – 如果不是 None,这将在每个工作子进程上调用,在播种之后和数据加载之前,将工作人员 id(一个 int in )作为输入。(默认值:)[0, num_workers - 1]None
- 
generator ( torch .Generator , optional ) – 如果没有,RandomSampler 将使用这个 RNG 来生成随机索引和多处理来为 worker生成 base_seed。(默认值:) NoneNone
- 
prefetch_factor ( int , optional , keyword-only arg ) – 每个工作人员提前加载的样本数。 2意味着将在所有工作人员中预取总共 2 * num_workers 个样本。(默认值:2)
- 
persistent_workers ( bool , optional ) – 如果 True,数据加载器在数据集被消费一次后不会关闭工作进程。这允许保持工作人员数据集实例处于活动状态。(默认值:False)
首先,__getitem__就是获取样本对,模型直接通过这一函数获得一对样本对{x:y}。__len__是指数据集长度。

 
                
             
         浙公网安备 33010602011771号
浙公网安备 33010602011771号