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生成验证码实例
Aug 21 Python
深入浅析python定时杀进程
Jun 06 Python
python制作爬虫爬取京东商品评论教程
Dec 16 Python
Python2.7+pytesser实现简单验证码的识别方法
Dec 29 Python
Python实现定时精度可调节的定时器
Apr 15 Python
Python实现数据结构线性链表(单链表)算法示例
May 04 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
Jul 05 Python
如何使用python进行pdf文件分割
Nov 11 Python
python读取多层嵌套文件夹中的文件实例
Feb 27 Python
简单了解python shutil模块原理及使用方法
Apr 28 Python
解决python对齐错误的方法
Jul 16 Python
python爬虫数据保存到mongoDB的实例方法
Jul 28 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数组函数序列之array_key_exists() - 查找数组键名是否存在
2011/10/29 PHP
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
jQuery 插件 将this下的div轮番显示
2009/04/09 Javascript
JS OOP包机制,类创建的方法定义
2009/11/02 Javascript
jquery获取下拉列表的值为null的解决方法
2011/03/18 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
jquery sortable的拖动方法示例详解
2014/01/16 Javascript
javascript创建createXmlHttpRequest对象示例代码
2014/02/10 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
2015/03/09 Javascript
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
详解vue.js的devtools安装
2017/05/26 Javascript
webpack进阶——缓存与独立打包的用法
2017/08/02 Javascript
vue注册组件的几种方式总结
2018/03/08 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
前端路由&webpack基础配置详解
2019/06/10 Javascript
谈谈IntersectionObserver懒加载的具体使用
2019/10/15 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
Python读取键盘输入的2种方法
2015/06/16 Python
对pytorch网络层结构的数组化详解
2018/12/08 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
详解Python中的分支和循环结构
2020/02/11 Python
在Django中预防CSRF攻击的操作
2020/03/13 Python
套娃式文件夹如何通过Python批量处理
2020/08/23 Python
用CSS3实现Win8风格的方格导航菜单效果
2013/04/10 HTML / CSS
可自定义箭头样式的CSS3气泡提示框
2016/03/16 HTML / CSS
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
Fabletics官网:美国运动服饰品牌,由好莱坞女演员凯特·哈德森创立
2019/10/19 全球购物
外贸员简历中的自我评价
2014/03/04 职场文书
文体活动实施方案
2014/03/27 职场文书
请假条标准格式规范
2014/04/10 职场文书
推荐信格式要求
2014/05/09 职场文书
大学生就业协议书范本(适用于公司企业)
2014/10/07 职场文书
合同权益转让协议书模板
2014/11/18 职场文书
2014年信用社工作总结
2014/11/25 职场文书
MySQL控制流函数(-if ,elseif,else,case...when)
2022/07/07 MySQL