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


Posted in Python onDecember 31, 2019

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

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

下面举例说明。

from dataSet import *
dataset = DogCat('data/dogcat/', transform=transform)

from torch.utils.data import DataLoader
# 狗的图片被取出的概率是猫的概率的两倍
# 两类图片被取出的概率与weights的绝对大小无关,只和比值有关
weights = [2 if label == 1 else 1 for data, label in dataset]

print(weights)

from torch.utils.data.sampler import WeightedRandomSampler
sampler = WeightedRandomSampler(weights,\
                num_samples=9,\
                replacement=True)
dataloader = DataLoader(dataset,
            batch_size=3,
            sampler=sampler)
for datas, labels in 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 sampler对数据进行采样的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
wxPython窗口的继承机制实例分析
Sep 28 Python
Python使用Turtle模块绘制五星红旗代码示例
Dec 11 Python
Python实现读取字符串按列分配后按行输出示例
Apr 17 Python
Python 找到列表中满足某些条件的元素方法
Jun 26 Python
python实现扫描ip地址的小程序
Apr 16 Python
Python argparse模块应用实例解析
Nov 15 Python
Python实现数值积分方式
Nov 20 Python
python3 assert 断言的使用详解 (区别于python2)
Nov 27 Python
在pycharm中为项目导入anacodna环境的操作方法
Feb 12 Python
Python使用扩展库pywin32实现批量文档打印实例
Apr 09 Python
如何基于python实现年会抽奖工具
Oct 20 Python
python实现模拟器爬取抖音评论数据的示例代码
Jan 06 Python
关于pytorch处理类别不平衡的问题
Dec 31 #Python
pytorch 指定gpu训练与多gpu并行训练示例
Dec 31 #Python
浅析Django中关于session的使用
Dec 30 #Python
使用pickle存储数据dump 和 load实例讲解
Dec 30 #Python
在Python中利用pickle保存变量的实例
Dec 30 #Python
python Popen 获取输出,等待运行完成示例
Dec 30 #Python
Python3常见函数range()用法详解
Dec 30 #Python
You might like
一段php加密解密的代码
2006/10/09 PHP
PHP array 的加法操作代码
2010/07/24 PHP
PHP SEO优化之URL优化方法
2011/04/21 PHP
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
ThinkPHP5 验证器的具体使用
2018/05/31 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
javascript来定义类的规范小结
2010/11/19 Javascript
Js+Flash实现访问剪切板操作
2012/11/20 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
JS 对象属性相关(检查属性、枚举属性等)
2015/04/05 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
获取当前按钮或者html的ID名称实例(推荐)
2017/06/23 Javascript
jQuery自动或手动图片切换效果
2017/10/11 jQuery
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
js中int和string数据类型互相转化实例
2019/01/16 Javascript
requests和lxml实现爬虫的方法
2017/06/11 Python
python爬虫实例详解
2018/06/19 Python
Python变量类型知识点总结
2019/02/18 Python
解析python的局部变量和全局变量
2019/08/15 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
2020/08/17 Python
Django restful framework生成API文档过程详解
2020/11/12 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
医学护理毕业生自荐信
2013/11/07 职场文书
升职自荐信
2013/11/28 职场文书
元旦晚会上单位领导演讲稿
2014/01/05 职场文书
安全生产大检查方案
2014/05/07 职场文书
放假通知范文
2015/04/14 职场文书
Golang 获取文件md5校验的方法以及效率对比
2021/05/08 Golang
redis实现排行榜功能
2021/05/24 Redis