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 相关文章推荐
在Python中进行自动化单元测试的教程
Apr 15 Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 Python
深入浅析Python传值与传址
Jul 10 Python
用Django写天气预报查询网站
Oct 21 Python
Python中fnmatch模块的使用详情
Nov 30 Python
Opencv+Python 色彩通道拆分及合并的示例
Dec 08 Python
浅谈Python中的全局锁(GIL)问题
Jan 11 Python
Django后端接收嵌套Json数据及解析详解
Jul 17 Python
详解Django 时间与时区设置问题
Jul 23 Python
python实现用户名密码校验
Mar 18 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
Jun 24 Python
matplotlib基础绘图命令之bar的使用方法
Aug 13 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
新浪新闻小偷
2006/10/09 PHP
《PHP编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
Apache2中实现多网站域名绑定的实现方法
2011/06/01 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
2015/05/12 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
JavaScript Cookie的读取和写入函数
2009/12/08 Javascript
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
JavaScript实现拼音排序的方法
2012/11/20 Javascript
基于SVG的web页面图形绘制API介绍及编程演示
2013/06/28 Javascript
jquery插件开发之实现google+圈子选择功能
2014/03/10 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
Bootstrap3制作搜索框样式的方法
2016/07/11 Javascript
jQuery EasyUI Tab 选项卡问题小结
2016/08/16 Javascript
JavaScript DOM节点操作方法总结
2016/08/23 Javascript
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
2017/08/24 Javascript
解决node修改后需频繁手动重启的问题
2018/05/13 Javascript
nuxt.js写项目时增加错误提示页面操作
2020/11/05 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
ajax jquery实现页面某一个div的刷新效果
2021/03/04 jQuery
Django Admin实现上传图片校验功能
2016/03/06 Python
Python中的字符串查找操作方法总结
2016/06/27 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
python视频按帧截取图片工具
2019/07/23 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
python多线程实现代码(模拟银行服务操作流程)
2020/01/13 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
python实现npy格式文件转换为txt文件操作
2020/07/01 Python
台湾生鲜宅配:大口市集
2017/10/14 全球购物
八一建军节活动方案
2014/02/10 职场文书
职位说明书范文
2014/05/07 职场文书
学习习近平主席讲话心得体会
2016/01/20 职场文书
2016年度师德标兵先进事迹材料
2016/02/26 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python