关于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进行AES加密和解密的示例代码
Feb 02 Python
python和pygame实现简单俄罗斯方块游戏
Feb 19 Python
python数据批量写入ScrolledText的优化方法
Oct 11 Python
对python周期性定时器的示例详解
Feb 19 Python
Python 二叉树的层序建立与三种遍历实现详解
Jul 29 Python
PYTHON发送邮件YAGMAIL的简单实现解析
Oct 28 Python
详谈tensorflow gfile文件的用法
Feb 05 Python
OpenCV 之按位运算举例解析
Jun 19 Python
获取python运行输出的数据并解析存为dataFrame实例
Jul 07 Python
浅谈Python里面None True False之间的区别
Jul 09 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
Sep 09 Python
python爬虫之爬取笔趣阁小说
Apr 22 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容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
Sublime里直接运行PHP配置方法
2014/11/28 PHP
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
2018/03/21 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
Vue.js获取被选择的option的value和text值方法
2018/08/24 Javascript
如何利用javascript接收json信息并进行处理
2020/08/06 Javascript
鸿蒙系统中的 JS 开发框架
2020/09/18 Javascript
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
javascript实现随机抽奖功能
2020/12/30 Javascript
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
Python实现计算圆周率π的值到任意位的方法示例
2018/05/08 Python
Python简单爬虫导出CSV文件的实例讲解
2018/07/06 Python
解决Python3中的中文字符编码的问题
2018/07/18 Python
python 自动重连wifi windows的方法
2018/12/18 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
Python-copy()与deepcopy()区别详解
2019/07/12 Python
Python如何使用字符打印照片
2020/01/03 Python
python中with用法讲解
2020/02/07 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
零基础小白多久能学会python
2020/06/22 Python
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
雅诗兰黛香港官网:Estee Lauder香港
2017/09/26 全球购物
英国户外玩具儿童游乐设备网站:TP Toys(蹦床、攀爬框架、秋千、滑梯和游戏屋)
2018/04/09 全球购物
美国豪华的多品牌精品店:The Webster
2019/07/31 全球购物
车间核算员岗位职责
2014/07/01 职场文书
股东出资证明书范例
2014/10/04 职场文书
骨干教师事迹材料
2014/12/17 职场文书
投标承诺函范文
2015/01/21 职场文书
企业战略合作意向书
2015/05/08 职场文书
浅谈如何写好演讲稿?
2019/06/12 职场文书