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开发vim插件及心得分享
Nov 04 Python
python使用socket连接远程服务器的方法
Apr 29 Python
Python导入oracle数据的方法
Jul 10 Python
浅析Python中MySQLdb的事务处理功能
Sep 21 Python
python虚拟环境virtualenv的安装与使用
Sep 21 Python
Python中顺序表的实现简单代码分享
Jan 09 Python
python爬取m3u8连接的视频
Feb 28 Python
python 将大文件切分为多个小文件的实例
Jan 14 Python
Python递归函数实例讲解
Feb 27 Python
10款最好的Python开发编辑器
Jul 03 Python
python 控制台单行刷新,多行刷新实例
Feb 19 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
Dec 09 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 删除无限级目录与文件代码共享
2008/11/22 PHP
php 传值赋值与引用赋值的区别
2010/12/29 PHP
服务器上配置PHP运行环境教程
2015/02/12 PHP
动态加载js和css(外部文件)
2013/04/17 Javascript
中文字符串截取的js函数代码
2013/04/17 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
2015/02/24 Javascript
使用jspdf生成pdf报表
2015/07/03 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
使用jquery提交form表单并自定义action的方法
2016/05/25 Javascript
IE下JS保存图片的简单实例
2016/07/15 Javascript
JavaScript简单获取系统当前时间完整示例
2016/08/02 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
Element UI框架中巧用树选择器的实现
2018/12/12 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
[45:16]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第一场 12.12
2020/12/16 DOTA
在Python中使用模块的教程
2015/04/27 Python
python关键字and和or用法实例
2015/05/28 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
python 反向输出字符串的方法
2018/07/16 Python
python实现支付宝转账接口
2019/05/07 Python
Python对接支付宝支付自实现功能
2019/10/10 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
2019/11/26 Python
pycharm设置当前工作目录的操作(working directory)
2020/02/14 Python
解析Tensorflow之MNIST的使用
2020/06/30 Python
解决python的空格和tab混淆而报错的问题
2021/02/26 Python
几个Linux面试题笔试题
2016/08/01 面试题
同事吵架检讨书
2014/02/05 职场文书
初三学习决心书
2014/03/11 职场文书
财务负责人任命书
2014/06/06 职场文书
浅谈Golang 嵌套 interface 的赋值问题
2021/04/29 Golang
攻略丨滑雪究竟该选哪款对讲机?
2022/02/18 无线电
SpringBoot 整合mongoDB并自定义连接池的示例代码
2022/02/28 MongoDB