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 ansible服务及剧本编写
Dec 29 Python
python pandas dataframe 按列或者按行合并的方法
Apr 12 Python
python调用tcpdump抓包过滤的方法
Jul 18 Python
Python设计模式之抽象工厂模式原理与用法详解
Jan 15 Python
Python+PyQt5实现美剧爬虫可视工具的方法
Apr 25 Python
python从list列表中选出一个数和其对应的坐标方法
Jul 20 Python
python如何保证输入键入数字的方法
Aug 23 Python
用python生成与调用cntk模型代码演示方法
Aug 26 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
Nov 11 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
Mar 11 Python
使用python实现名片管理系统
Jun 18 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
Dec 09 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
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
php 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
php中截取中文字符串的代码小结
2011/07/17 PHP
JS格式化数字保留两位小数点示例代码
2013/10/15 Javascript
js+css实现的简单易用兼容好的分页
2013/12/30 Javascript
jquery实现更改表格行顺序示例
2014/04/30 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
详解JavaScript正则表达式之RegExp对象
2015/12/13 Javascript
js 获取经纬度的实现方法
2016/06/20 Javascript
基于原生JS实现图片裁剪
2016/08/01 Javascript
javascript实现秒表计时器的制作方法
2017/02/16 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
angular 数据绑定之[]和{{}}的区别
2018/09/25 Javascript
详解angular2.x创建项目入门指令
2018/10/11 Javascript
微信小程序实现展示评分结果功能
2019/02/15 Javascript
微信小程序利用for循环解决内容变更问题
2020/03/05 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
在Mac OS上搭建Python的开发环境
2015/12/24 Python
编写Python爬虫抓取暴走漫画上gif图片的实例分享
2016/04/20 Python
用Python写王者荣耀刷金币脚本
2017/12/21 Python
基于Django用户认证系统详解
2018/02/21 Python
django中模板的html自动转意方法
2018/05/27 Python
Django实现CAS+OAuth2的方法示例
2019/10/30 Python
Python关键字及可变参数*args,**kw原理解析
2020/04/04 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
python else语句在循环中的运用详解
2020/07/06 Python
matplotlib教程——强大的python作图工具库
2020/10/15 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
2021/01/15 Python
Roxy俄罗斯官方网站:冲浪和滑雪板的一切
2020/06/20 全球购物
献爱心活动总结
2014/05/07 职场文书
黄埔军校观后感
2015/06/10 职场文书
男方家长婚礼致辞
2015/07/27 职场文书
互联网创业商业模式以及赚钱法则有哪些?
2019/10/12 职场文书
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL