1. dataloader() 初始化函数
其中几个常用的参数:
dataset 数据集,map-style and iterable-style 可以用index取值的对象、batch_size 大小shuffle 取batch是否随机取, 默认为Falsesampler 定义取batch的方法,是一个迭代器, 每次生成一个key 用于读取dataset中的值batch_sampler 也是一个迭代器, 每次生次一个batch_size的keynum_workers 参与工作的线程数collate_fn 对取出的batch进行处理drop_last 对最后不足batchsize的数据的处理方法
下面看两段取自DataLoader中的__init__代码, 帮助我们理解几个常用参数之间的关系
2. shuffle 与sample 之间的关系
当我们sampler有输入时,shuffle的值就没有意义,
当dataset类型是map style时, shuffle其实就是改变sampler的取值
shuffle为默认值 False时,sampler是SequentialSampler,就是按顺序取样,shuffle为True时,sampler是RandomSampler, 就是按随机取样
3. sample 的定义方法
3.1 sampler 参数的使用
sampler 是用来定义取batch方法的一个函数或者类,返回的是一个迭代器。
我们可以看下自带的RandomSampler类中最重要的iter函数
可以看出,其实就是生成索引,然后随机的取值, 然后再迭代。
其实还有一些细节需要注意理解:
比如__len__函数,包括DataLoader的len和sample的len, 两者区别, 这部分代码比较简单,可以自行阅读,其实参考着RandomSampler写也不会出现问题。比如,迭代器和生成器的使用, 以及区别
BatchSampler的生成过程:
就是按batch_size从sampler中读取索引, 并形成生成器返回。
以上可以看出, batch_sampler和sampler, batch_size, drop_last之间的关系
如果batch_sampler没有定义的话且batch_size有定义, 会根据sampler, batch_size, drop_last生成一个batch_sampler自带的注释中对batch_sampler有一句话: Mutually exclusive with :attr:batch_size :attr:shuffle, :attr:sampler, and :attr:drop_last.意思就是batch_sampler 与这些参数冲突 ,即 如果你定义了batch_sampler, 其他参数都不需要有
4. batch 生成过程
每个batch都是由迭代器产生的:
到此这篇关于pytorch中dataloader 的sampler 参数详解的文章就介绍到这了,更多相关pytorch sampler 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:基于pytorch的保存和加载模型参数的方法PyTorch加载模型model.load_state_dict()问题及解决PyTorch使用cpu加载模型运算方式Pytorch使用技巧之Dataloader中的collate_fn参数详析pytorch DataLoader的num_workers参数与设置大小详解Pytorch技巧:DataLoader的collate_fn参数使用详解pytorch保存和加载模型的方法及如何load部分参数