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通过shutil实现快速文件复制的方法
Mar 14 Python
在Python程序中操作文件之flush()方法的使用教程
May 24 Python
Python导入模块时遇到的错误分析
Aug 30 Python
python select.select模块通信全过程解析
Sep 20 Python
Python使用分布式锁的代码演示示例
Jul 30 Python
浅谈pandas用groupby后对层级索引levels的处理方法
Nov 06 Python
Python设计模式之模板方法模式实例详解
Jan 17 Python
Python generator生成器和yield表达式详解
Aug 08 Python
python实现跨excel sheet复制代码实例
Mar 03 Python
Python Flask上下文管理机制实例解析
Mar 16 Python
Python可以实现栈的结构吗
May 27 Python
Python循环之while无限迭代
Apr 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
PHP删除HTMl标签的实现代码
2013/06/30 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
2017/10/17 PHP
jQuery 自动增长的文本输入框实现代码
2010/04/02 Javascript
js 动态文字滚动的例子
2011/01/17 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
解析John Resig Simple JavaScript Inheritance代码
2012/12/03 Javascript
js+canvas绘制五角星的方法
2016/01/28 Javascript
AngularJS身份验证的方法
2016/02/17 Javascript
JavaScript Math 对象常用方法总结
2016/04/28 Javascript
JavaScript学习笔记整理_用于模式匹配的String方法
2016/09/19 Javascript
JS实现图文并茂的tab选项卡效果示例【附demo源码下载】
2016/09/21 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
JS解析url查询参数的简单代码
2017/08/06 Javascript
详解Vue的computed(计算属性)使用实例之TodoList
2017/08/07 Javascript
删除table表格行的实例讲解
2017/09/21 Javascript
vue实现tab切换外加样式切换方法
2018/03/16 Javascript
vue首次赋值不触发watch的解决方法
2018/09/11 Javascript
JavaScript从原型到原型链深入理解
2019/06/03 Javascript
JS实现数组删除指定元素功能示例
2019/06/05 Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
2020/02/28 Javascript
[50:22]完美盛典-2018年度红毯走秀
2018/12/16 DOTA
Python 文件操作技巧(File operation) 实例代码分析
2008/08/11 Python
Python实现注册、登录小程序功能
2018/09/21 Python
Django框架视图函数设计示例
2019/07/29 Python
python+Django实现防止SQL注入的办法
2019/10/31 Python
Python Django中间件,中间件函数,全局异常处理操作示例
2019/11/08 Python
python 实现ping测试延迟的两种方法
2020/12/10 Python
python实现计算图形面积
2021/02/22 Python
初中女生自我鉴定
2013/12/19 职场文书
数学系毕业生的自我评价
2014/01/10 职场文书
乡领导班子四风问题对照检查材料
2014/09/25 职场文书
高三语文复习计划
2015/01/19 职场文书
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python
在SQL Server中使用 Try Catch 处理异常的示例详解
2022/07/15 SQL Server