关于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 相关文章推荐
在Linux下调试Python代码的各种方法
Apr 17 Python
python使用fork实现守护进程的方法
Nov 16 Python
python3+PyQt5实现自定义窗口部件Counters
Apr 20 Python
python的concat等多种用法详解
Nov 28 Python
pandas每次多Sheet写入文件的方法
Dec 10 Python
python使用tkinter库实现五子棋游戏
Jun 18 Python
对PyQt5中的菜单栏和工具栏实例详解
Jun 20 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
Jul 04 Python
Python占用的内存优化教程
Jul 28 Python
虚拟机下载python是否需要联网
Jul 27 Python
改变 Python 中线程执行顺序的方法
Sep 24 Python
python smtplib发送多个email联系人的实现
Oct 09 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
第七节 类的静态成员 [7]
2006/10/09 PHP
写一个用户在线显示的程序
2006/10/09 PHP
PHP提取字符串中的图片地址[正则表达式]
2011/11/12 PHP
PHP curl 获取响应的状态码的方法
2014/01/13 PHP
PHP合并静态文件详解
2014/11/14 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
javascript实现行拖动的方法
2015/05/27 Javascript
js+css实现上下翻页相册代码分享
2015/08/18 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
2015/10/14 Javascript
easyui messager alert 三秒后自动关闭提示的实例
2016/11/07 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
对angularJs中controller控制器scope父子集作用域的实例讲解
2018/10/08 Javascript
js常用正则表达式集锦
2019/05/17 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
JavaScript中变量提升机制示例详解
2019/12/27 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
[29:23]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场1
2014/05/23 DOTA
常用python数据类型转换函数总结
2014/03/11 Python
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
Python3.5实现的罗马数字转换成整数功能示例
2019/02/25 Python
pytorch中获取模型input/output shape实例
2019/12/30 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
2020/07/07 Python
python 基于opencv操作摄像头
2020/12/24 Python
使用CSS3编写类似iOS中的复选框及带开关的按钮
2016/04/11 HTML / CSS
css3实现简单的白云飘动背景特效
2020/10/28 HTML / CSS
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
英国第一摩托车和摩托车越野配件商店:GhostBikes
2019/03/10 全球购物
材料成型专业个人求职信范文
2013/09/25 职场文书
会计专业毕业生自我评价
2013/09/25 职场文书
评析教师个人的自我评价
2014/02/19 职场文书
婚礼父母答谢词
2015/01/04 职场文书
天下第一关导游词
2015/02/06 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书