关于pytorch处理类别不平衡的问题
Python  /  管理员 发布于 5年前   610
当训练样本不均匀时,我们可以采用过采样、欠采样、数据增强等手段来避免过拟合。今天遇到一个3d点云数据集合,样本分布极不均匀,正例与负例相差4-5个数量级。数据增强效果就不会太好了,另外过采样也不太合适,因为是空间数据,新增的点有可能会对真实分布产生未知影响。所以采用欠采样来缓解类别不平衡的问题。
下面的代码展示了如何使用WeightedRandomSampler来完成抽样。
numDataPoints = 1000data_dim = 5bs = 100# Create dummy data with class imbalance 9 to 1data = 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_countsamples_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_countsamples_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处理类别不平衡的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号