关于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 14 Python
使用Python程序抓取新浪在国内的所有IP的教程
May 04 Python
python日志记录模块实例及改进
Feb 12 Python
浅谈Pycharm调用同级目录下的py脚本bug
Dec 03 Python
Python面向对象程序设计类的多态用法详解
Apr 12 Python
python实现扫描ip地址的小程序
Apr 16 Python
python2和python3在处理字符串上的区别详解
May 29 Python
python time.sleep()是睡眠线程还是进程
Jul 09 Python
Python实现socket非阻塞通讯功能示例
Nov 06 Python
Python Django框架模板渲染功能示例
Nov 08 Python
Python 在 VSCode 中使用 IPython Kernel 的方法详解
Sep 05 Python
细说NumPy数组的四种乘法的使用
Dec 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
上海牌131型七灯四波段四喇叭一级收音机
2021/03/02 无线电
php操作JSON格式数据的实现代码
2011/12/24 PHP
PHP Curl出现403错误的解决办法
2014/05/29 PHP
PHP防止注入攻击实例分析
2014/11/03 PHP
PHP abstract 抽象类定义与用法示例
2018/05/29 PHP
laravel配置Redis多个库的实现方法
2019/04/10 PHP
使用js获取QueryString的方法小结
2010/02/28 Javascript
JavaScript 对象链式操作测试代码
2010/04/25 Javascript
js实现的常用的左侧导航效果
2013/10/17 Javascript
通过location.replace禁止浏览器后退防止重复提交
2014/09/04 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
适用于javascript开发者的Processing.js入门教程
2016/02/24 Javascript
详解nodejs 文本操作模块-fs模块(四)
2016/12/22 NodeJs
微信小程序基于slider组件动态修改标签透明度的方法示例
2017/12/04 Javascript
js中DOM事件绑定分析
2018/03/18 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
react国际化化插件react-i18n-auto使用详解
2020/03/31 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
2020/11/02 Javascript
[01:05:41]EG vs Optic Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
python中日期和时间格式化输出的方法小结
2015/03/19 Python
处理Python中的URLError异常的方法
2015/04/30 Python
使用python Fabric动态修改远程机器hosts的方法
2018/10/26 Python
python opencv将表格图片按照表格框线分割和识别
2019/10/30 Python
HTML5语音识别标签写法附图
2013/11/18 HTML / CSS
马克华菲官方商城:Mark Fairwhale
2016/09/04 全球购物
澳大利亚儿童鞋在线:The Trybe
2019/07/16 全球购物
沃尔玛旗下墨西哥超市:Bodega Aurrera
2020/11/13 全球购物
高级护理专业毕业生推荐信
2013/12/25 职场文书
实习心得体会
2014/01/02 职场文书
三个儿子教学反思
2014/02/03 职场文书
食品安全承诺书
2014/05/22 职场文书
医学求职自荐信
2014/06/21 职场文书
晚会开幕词
2015/01/28 职场文书
2015年乡镇财政工作总结
2015/05/19 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书