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列表去重方法
Jan 17 Python
python实现的正则表达式功能入门教程【经典】
Jun 05 Python
python实现k-means聚类算法
Feb 23 Python
对Python中gensim库word2vec的使用详解
May 08 Python
python实现人人自动回复、抢沙发功能
Jun 08 Python
opencv python 图像去噪的实现方法
Aug 31 Python
Python3模拟curl发送post请求操作示例
May 03 Python
Django 1.10以上版本 url 配置注意事项详解
Aug 05 Python
Pytorch mask-rcnn 实现细节分享
Jun 24 Python
python statsmodel的使用
Dec 21 Python
Python列表的深复制和浅复制示例详解
Feb 12 Python
 python中的元类metaclass详情
May 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计算排列组合的方法
2013/11/13 PHP
PHP中的常见魔术方法功能作用及用法实例
2015/07/01 PHP
PHP输出多个元素的排列或组合的方法
2017/03/14 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
2018/08/04 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
2019/10/15 PHP
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
javascript 面向对象编程基础:继承
2009/08/21 Javascript
NodeJS学习笔记之Connect中间件模块(一)
2015/01/27 NodeJs
简述JavaScript中正则表达式的使用方法
2015/06/15 Javascript
微信QQ的二维码登录原理js代码解析
2016/06/23 Javascript
浅谈js构造函数的方法与原型prototype
2016/07/04 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
2016/11/18 Javascript
详解浏览器渲染页面过程
2017/02/09 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
vue-router:嵌套路由的使用方法
2017/02/21 Javascript
javascript 中的try catch应用总结
2017/04/01 Javascript
基于JavaScript实现图片连播和联级菜单实例代码
2017/07/28 Javascript
原生JS实现简单的无缝自动轮播效果
2018/09/26 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
2018/09/27 Javascript
axios实现简单文件上传功能
2019/09/25 Javascript
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
Python实现动态添加类的属性或成员函数的解决方法
2014/07/16 Python
收集的几个Python小技巧分享
2014/11/22 Python
Python中编写ORM框架的入门指引
2015/04/29 Python
Python中一行和多行import模块问题
2018/04/01 Python
centos6.8安装python3.7无法import _ssl的解决方法
2018/09/17 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
html5自带表单验证体验优化及提示气泡修改功能
2017/09/12 HTML / CSS
会计专业推荐信
2013/10/29 职场文书
幼儿园园长岗位职责
2013/11/26 职场文书
医学检验专业个人求职信范文
2013/12/04 职场文书
幼儿园实习生辞职信
2014/01/20 职场文书
2014保险公司个人工作总结
2014/12/09 职场文书
文明医院的标语集锦!
2019/07/24 职场文书
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript