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实现将文本转换成语音的方法
May 28 Python
Python的Twisted框架中使用Deferred对象来管理回调函数
May 25 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
Sep 21 Python
python批量查询、汉字去重处理CSV文件
May 31 Python
Python3.6简单的操作Mysql数据库的三个实例
Oct 17 Python
基于wxPython的GUI实现输入对话框(1)
Feb 27 Python
pyqt5实现登录界面的模板
May 30 Python
Django中ORM外键和表的关系详解
May 20 Python
Laravel框架表单验证格式化输出的方法
Sep 25 Python
python进程间通信Queue工作过程详解
Nov 01 Python
Python创建空列表的字典2种方法详解
Feb 13 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
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 如何利用phpexcel导入数据库
2013/08/24 PHP
PHP解码unicode编码的中文字符代码分享
2014/08/13 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
jquery实现显示已选用户
2014/07/21 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
2017/04/28 Javascript
在vue中使用Autoprefixed的方法
2018/07/27 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
2018/12/24 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
2020/04/22 Javascript
javascript实现前端成语点击验证优化
2020/06/24 Javascript
python里将list中元素依次向前移动一位
2014/09/12 Python
python生成器generator用法实例分析
2015/06/04 Python
听歌识曲--用python实现一个音乐检索器的功能
2016/11/15 Python
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
Python之dict(或对象)与json之间的互相转化实例
2018/06/05 Python
python计算列表内各元素的个数实例
2018/06/29 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
Python爬虫之urllib基础用法教程
2019/10/12 Python
Python列表如何更新值
2020/05/27 Python
Python3如何在服务器打印资产信息
2020/08/27 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
详解matplotlib绘图样式(style)初探
2021/02/03 Python
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
Html5 web本地存储实例详解
2016/07/28 HTML / CSS
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
欧洲最大的拼图游戏商店:JigsawPuzzle.co.uk
2018/07/04 全球购物
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
高中军训感言600字
2014/03/11 职场文书
教师个人自我评价范文
2014/04/13 职场文书
MySQL为id选择合适的数据类型
2021/06/07 MySQL
Python办公自动化之教你如何用Python将任意文件转为PDF格式
2021/06/28 Python
Tomcat用户管理的优化配置详解
2022/03/31 Servers