关于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使用正则表达式抓取网页图片的方法示例
Apr 21 Python
python生成1行四列全2矩阵的方法
Aug 04 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
Jan 29 Python
解决python中使用PYQT时中文乱码问题
Jun 17 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
Jun 25 Python
安装python及pycharm的教程图解
Oct 10 Python
使用python快速在局域网内搭建http传输文件服务的方法
Nov 14 Python
pandas-resample按时间聚合实例
Dec 27 Python
Python threading.local代码实例及原理解析
Mar 16 Python
django序列化时使用外键的真实值操作
Jul 15 Python
Python机器学习算法之决策树算法的实现与优缺点
May 13 Python
基于Python实现流星雨效果的绘制
Mar 18 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
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
2015/05/09 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
任意位置显示html菜单
2007/02/01 Javascript
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
jquery animate图片模向滑动示例代码
2011/01/26 Javascript
PHP PDO操作总结
2014/11/17 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
解决canvas画布使用fillRect()时高度出现双倍效果的问题
2017/08/03 Javascript
基于vue.js中事件修饰符.self的用法(详解)
2018/02/23 Javascript
vue mounted组件的使用
2018/06/18 Javascript
详解jQuery设置内容和属性
2019/04/11 jQuery
javascript中的this作用域详解
2019/07/15 Javascript
[03:15]DOTA2-DPC中国联赛1月22日Recap集锦
2021/03/11 DOTA
python中lambda函数 list comprehension 和 zip函数使用指南
2014/09/28 Python
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
python基于Tkinter库实现简单文本编辑器实例
2015/05/05 Python
Python中取整的几种方法小结
2017/01/06 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
Python常见工厂函数用法示例
2018/03/21 Python
python中itertools模块zip_longest函数详解
2018/06/12 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
Python线程指南分享
2019/11/19 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
python实现FTP循环上传文件
2020/03/20 Python
找到不普通的东西:Bonanza
2016/10/20 全球购物
MADE荷兰:提供原创设计师家具
2018/04/03 全球购物
解释下面关于J2EE的名词
2013/11/15 面试题
工程专业毕业生自荐信范文
2013/12/25 职场文书
车间统计员岗位职责
2014/01/05 职场文书
家长对小学生的评语
2014/01/28 职场文书
大学生职业生涯规划书参考模板
2014/03/05 职场文书
演讲稿的写法
2014/05/19 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书