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在windows下实现备份程序实例
Jul 04 Python
使用python开发vim插件及心得分享
Nov 04 Python
Python函数式编程指南(四):生成器详解
Jun 24 Python
python编程实现12306的一个小爬虫实例
Dec 27 Python
DataFrame中的object转换成float的方法
Apr 10 Python
python写入已存在的excel数据实例
May 03 Python
Flask框架实现给视图函数增加装饰器操作示例
Jul 16 Python
python requests指定出口ip的例子
Jul 25 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
Jan 08 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
Mar 24 Python
python 写函数在一定条件下需要调用自身时的写法说明
Jun 01 Python
matplotlib交互式数据光标mpldatacursor的实现
Feb 03 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二进制流 逐bit的低位在前算法(详解)
2013/06/13 PHP
php中注册器模式类用法实例分析
2015/11/03 PHP
php微信公众平台配置接口开发程序
2016/09/22 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
javascript IFrame 强制刷新代码
2009/07/23 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
在jquery中combobox多选的不兼容问题总结
2013/12/24 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
js实现索引图片切换效果
2015/11/21 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
json格式的javascript对象用法分析
2016/07/04 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
jquery获取下拉框中的循环值
2017/02/08 Javascript
requirejs + vue 项目搭建详解
2017/06/16 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
2017/08/22 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
2017/12/26 Javascript
Vue的实例、生命周期与Vue脚手架(vue-cli)实例详解
2017/12/27 Javascript
浅谈AngularJS中$http服务的简单用法
2018/05/15 Javascript
关于vue的语法规则检测报错问题的解决
2018/05/21 Javascript
JS实现用特殊符号替换字符串的中间部分区域的实例代码
2018/07/24 Javascript
vue-vuex中使用commit提交mutation来修改state的方法详解
2018/09/16 Javascript
Vue.js上传图片到阿里云OSS存储的方法示例
2018/12/13 Javascript
基于jQuery实现可编辑的表格
2019/12/11 jQuery
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
解决vue打包 npm run build-test突然不动了的问题
2020/11/13 Javascript
Python 正则表达式(转义问题)
2014/12/15 Python
python实现通过pil模块对图片格式进行转换的方法
2015/03/24 Python
Python中pip安装非PyPI官网第三方库的方法
2015/06/02 Python
Python打包可执行文件的方法详解
2016/09/19 Python
基于pytorch中的Sequential用法说明
2020/06/24 Python
python3 简单实现组合设计模式
2020/07/02 Python
CSS3+JavaScript实现炫酷呼吸效果的示例代码
2020/06/15 HTML / CSS
列车长先进事迹材料
2014/01/25 职场文书
详解python字符串驻留技术
2021/05/21 Python
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers