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条件和循环的使用方法
Nov 01 Python
Python的gevent框架的入门教程
Apr 29 Python
Python的collections模块中namedtuple结构使用示例
Jul 07 Python
Python自然语言处理之词干,词形与最大匹配算法代码详解
Nov 16 Python
Python简单实现控制电脑的方法
Jan 22 Python
python 获取字符串MD5值方法
May 29 Python
python读写csv文件实例代码
Jul 05 Python
python区分不同数据类型的方法
Oct 14 Python
Python加载数据的5种不同方式(收藏)
Nov 13 Python
Opencv python 图片生成视频的方法示例
Nov 18 Python
Python爬虫之爬取哔哩哔哩热门视频排行榜
Apr 28 Python
python识别围棋定位棋盘位置
Jul 26 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实现扎金花游戏之大小比赛的方法
2015/03/10 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
JS宝典学习笔记(下)
2007/01/10 Javascript
JS定时器实例
2013/04/17 Javascript
鼠标移动到图片名上,显示图片的简单实例
2013/07/14 Javascript
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
关于JS变量和作用域详解
2016/07/28 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
从零开始实现Vue简单的Toast插件
2018/12/03 Javascript
nodejs基础之常用工具模块util用法分析
2018/12/26 NodeJs
纯javascript实现选择框的全选与反选功能
2019/04/08 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
2019/05/22 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
Python聊天室实例程序分享
2016/01/05 Python
Python爬虫实现百度图片自动下载
2018/02/04 Python
python实现图片识别汽车功能
2018/11/30 Python
Django之模型层多表操作的实现
2019/01/08 Python
简单了解python单例模式的几种写法
2019/07/01 Python
Django工程的分层结构详解
2019/07/18 Python
python selenium自动化测试框架搭建的方法步骤
2020/06/14 Python
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
社区母亲节活动方案
2014/03/05 职场文书
2014国庆节餐厅促销活动策划方案
2014/09/16 职场文书
股东出资证明书范例
2014/10/04 职场文书
钢铁是怎样炼成的读书笔记
2015/06/29 职场文书
公司员工培训管理制度
2015/08/04 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS
Apache Pulsar集群搭建部署详细过程
2022/02/12 Servers