关于pytorch处理类别不平衡的问题


Posted in Python onDecember 31, 2019

当训练样本不均匀时,我们可以采用过采样、欠采样、数据增强等手段来避免过拟合。今天遇到一个3d点云数据集合,样本分布极不均匀,正例与负例相差4-5个数量级。数据增强效果就不会太好了,另外过采样也不太合适,因为是空间数据,新增的点有可能会对真实分布产生未知影响。所以采用欠采样来缓解类别不平衡的问题。

下面的代码展示了如何使用WeightedRandomSampler来完成抽样。

numDataPoints = 1000
data_dim = 5
bs = 100

# Create dummy data with class imbalance 9 to 1
data = torch.FloatTensor(numDataPoints, data_dim)
target = np.hstack((np.zeros(int(numDataPoints * 0.9), dtype=np.int32),
     np.ones(int(numDataPoints * 0.1), dtype=np.int32)))

print 'target train 0/1: {}/{}'.format(
 len(np.where(target == 0)[0]), len(np.where(target == 1)[0]))

class_sample_count = np.array(
 [len(np.where(target == t)[0]) for t in np.unique(target)])
weight = 1. / class_sample_count
samples_weight = np.array([weight[t] for t in target])

samples_weight = torch.from_numpy(samples_weight)
samples_weight = samples_weight.double()
sampler = WeightedRandomSampler(samples_weight, len(samples_weight))

target = torch.from_numpy(target).long()
train_dataset = torch.utils.data.TensorDataset(data, target)

train_loader = DataLoader(
 train_dataset, batch_size=bs, num_workers=1, sampler=sampler)

for i, (data, target) in enumerate(train_loader):
 print "batch index {}, 0/1: {}/{}".format(
  i,
  len(np.where(target.numpy() == 0)[0]),
  len(np.where(target.numpy() == 1)[0]))

核心部分为实际使用时替换下变量把sampler传递给DataLoader即可,注意使用了sampler就不能使用shuffle,另外需要指定采样点个数:

class_sample_count = np.array(
 [len(np.where(target == t)[0]) for t in np.unique(target)])
weight = 1. / class_sample_count
samples_weight = np.array([weight[t] for t in target])

samples_weight = torch.from_numpy(samples_weight)
samples_weight = samples_weight.double()
sampler = WeightedRandomSampler(samples_weight, len(samples_weight))

参考:https://discuss.pytorch.org/t/how-to-handle-imbalanced-classes/11264/2

以上这篇关于pytorch处理类别不平衡的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python编写一个简单的Lisp解释器的教程
Apr 03 Python
Python使用ftplib实现简易FTP客户端的方法
Jun 03 Python
详解Django中的权限和组以及消息
Jul 23 Python
解决Python出现_warn_unsafe_extraction问题的方法
Mar 24 Python
python基于隐马尔可夫模型实现中文拼音输入
Apr 01 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
Jan 26 Python
python3个性签名设计实现代码
Jun 19 Python
通过pycharm使用git的步骤(图文详解)
Jun 13 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
Jun 18 Python
python生成特定分布数的实例
Dec 05 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
Feb 26 Python
Pandas把dataframe或series转换成list的方法
Jun 14 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
Python Pickle 实现在同一个文件中序列化多个对象
Dec 30 #Python
You might like
服务器端解压缩zip的脚本
2006/12/22 PHP
destoon实现底部添加你是第几位访问者的方法
2014/07/15 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
2016/01/25 PHP
浅谈PHP各环境下的伪静态配置
2019/03/13 PHP
php文件包含的几种方式总结
2019/09/19 PHP
一端时间轮换的广告
2006/06/26 Javascript
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
提取jquery的ready()方法单独使用示例
2014/03/25 Javascript
JS跨域问题详解
2014/11/25 Javascript
Node.js开源应用框架HapiJS介绍
2015/01/14 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
2015/05/13 Javascript
JS实现具备延时功能的滑动门菜单效果
2015/09/17 Javascript
跟我学习javascript的隐式强制转换
2015/11/16 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
基于Angular.js实现的触摸滑动动画实例代码
2017/02/19 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
2017/02/20 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
解决vue处理axios post请求传参的问题
2018/03/05 Javascript
在vue中利用全局路由钩子给url统一添加公共参数的例子
2019/11/01 Javascript
JS document内容及样式操作完整示例
2020/01/14 Javascript
Python实现的凯撒密码算法示例
2018/04/12 Python
Django发送邮件功能实例详解
2019/09/02 Python
Python序列类型的打包和解包实例
2019/12/21 Python
Python动态强类型解释型语言原理解析
2020/03/25 Python
HTML5 Canvas的常用线条属性值总结
2016/03/17 HTML / CSS
美国钻石商店:Zales
2016/11/20 全球购物
劳力士官方珠宝商:J.R. Dunn Jewelers
2018/09/29 全球购物
初三化学教学反思
2014/01/23 职场文书
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
道歉的话语大全
2015/05/12 职场文书
中学政教处工作总结
2015/08/13 职场文书