pytorch采样器对数据进行采样的实现

  

PyTorch中还单独提供了一个取样器模块,用来对数据进行采样。常用的有随机采样器:RandomSampler,当dataloader的洗牌参数为真时,系统会自动调用这个采样器,实现打乱数据。默认的是采用SequentialSampler,它会按顺序一个一个进行采样。这里介绍另外一个很有用的采样方法:WeightedRandomSampler,它会根据每个样本的权重选取数据,在样本比例不均衡的问题中,可用它来进行重采样。

  

构建WeightedRandomSampler时需提供两个参数:每个样本的权重重量、共选取的样本总数num_samples,以及一个可选参数替换。权重越大的样本被选中的概率越大,待选取的样本数目一般小于全部的样本数目.replacement用于指定是否可以重复选取某一个样本,默认为真,即允许在一个时代中重复采样某一个数据。如果设为False,则当某一类的样本被全部选取完,但其样本数目仍未达到num_samples时,取样器将不会再从该类中选择数据,此时可能导致权重参数失效。

  

<强>下面举例说明。

        从数据集进口*   数据集=DogCat(数据/DogCat/,变换=变换)      从torch.utils。数据导入DataLoader   #狗的图片被取出的概率是猫的概率的两倍   #两类图片被取出的概率与权重的绝对大小无关,只和比值有关   重量=[2如果其他标签==1 1数据,标签数据集)      打印(权重)      从torch.utils.data。取样器进口WeightedRandomSampler   取样器=WeightedRandomSampler(重量、\   num_samples=9, \   替代=True)   dataloader=dataloader(数据集,   batch_size=3,   取样器取样器)   数据,在dataloader标签:   print (labels.tolist ())      

输出:         (2、2、1、1、2、1、1、2)   (1 1 0)   (1,0,0)   [0,0,1]      

github地址:

  https://github.com/WebLearning17/CommonTool

  

以上这篇pytorch采样器对数据进行采样的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

pytorch采样器对数据进行采样的实现