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错误和解决方法汇总整理
Jun 03 Python
Python实现读取txt文件并画三维图简单代码示例
Dec 09 Python
python绘制已知点的坐标的直线实例
Jul 04 Python
Python 使用folium绘制leaflet地图的实现方法
Jul 05 Python
python提取照片坐标信息的实例代码
Aug 14 Python
djano一对一、多对多、分页实例代码
Aug 16 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
Dec 10 Python
python 用 xlwings 库 生成图表的操作方法
Dec 22 Python
Python 实现自动获取种子磁力链接方式
Jan 16 Python
python 追踪except信息方式
Apr 25 Python
Python urllib.request对象案例解析
May 11 Python
Python模拟登录和登录跳转的参考示例
Oct 30 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
用session做客户验证时的注意事项
2006/10/09 PHP
PHP isset()与empty()的使用区别详解
2010/08/29 PHP
PHP依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
PHP token验证生成原理实例分析
2019/06/05 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
javascript web对话框与弹出窗口
2009/02/22 Javascript
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
jQuery经过一段时间自动隐藏指定元素的方法
2015/03/17 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
jQuery 跨域访问解决原理案例详解
2016/07/09 Javascript
纯前端JavaScript实现Excel IO案例分享
2016/08/26 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
JS中闭包的经典用法小结(2则示例)
2016/12/28 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
js实现轮播图的完整代码
2020/10/26 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
2018/09/20 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
实例讲解React 组件生命周期
2020/07/08 Javascript
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
2019/06/28 Python
python装饰器的特性原理详解
2019/12/25 Python
Python Selenium异常处理的实例分析
2021/02/28 Python
纯CSS3实现手风琴风格菜单具体步骤
2013/05/06 HTML / CSS
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
《大海那边》教学反思
2014/04/09 职场文书
大学竞选班长演讲稿
2014/04/24 职场文书
校友会致辞
2015/07/30 职场文书
七年级数学教学反思
2016/02/17 职场文书
2019财务管理制度最新范本!
2019/07/09 职场文书
创业计划书之家教托管
2019/09/25 职场文书
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript