首页 Paddle框架 帖子详情
怎么设置不同类的损失有不同权重呢?
收藏
快速回复
Paddle框架 问答炼丹技巧 1657 11
怎么设置不同类的损失有不同权重呢?
收藏
快速回复
Paddle框架 问答炼丹技巧 1657 11

在做一个口罩分类项目,武大有一个开源大人脸数据集,数据集正负样本达到里1:50左右。因为觉得直接修改数据集的话时间开销比较大。所以我想要用设置损失权重的方法。

分类用大交叉熵损失,paddle可以实现不同类计算损失时权重不相同的方法吗?如果没有的话,因为每次计算损失是一个batch计算的,一个batch里面有正样本和负样本,我要怎么自定义修改成不同类有不同的损失权重呢?

同时也想问下处理正负样本不平衡还有没更便捷的方法。

0
收藏
回复
全部评论(11)
时间顺序
l
li_gyh
#2 回复于2020-04

对样本标签用 ‘==1' 和 '==0' 得到维度为样本数量的bool向量

然后用gather或者cast成float之后乘上交叉熵输出再求和就行

2
回复
AIStudio810258
#3 回复于2020-04

label smooth是一种正则化的方法而已,让分类之间的cluster更加紧凑,增加类间距离,减少类内距离,避免over high confidence的adversarial examples。对多分类数量不平衡有效。二分类仅供你参考。我刚听说就赶紧来告诉你了。

2
回复
m
mar836924042
#4 回复于2020-04
li_gyh #2
对样本标签用 ‘==1' 和 '==0' 得到维度为样本数量的bool向量 然后用gather或者cast成float之后乘上交叉熵输出再求和就行

试了一下,方法确实可行,感谢

1
回复
m
mar836924042
#5 回复于2020-04
label smooth是一种正则化的方法而已,让分类之间的cluster更加紧凑,增加类间距离,减少类内距离,避免over high confidence的adversarial examples。对多分类数量不平衡有效。二分类仅供你参考。我刚听说就赶紧来告诉你了。
展开

好滴,非常感谢

0
回复
AIStudio810258
#6 回复于2020-04

我也正在用smote之类的方法解决各类样本不平衡的问题。这个问题太好了。

0
回复
AIStudio810258
#7 回复于2020-04
li_gyh #2
对样本标签用 ‘==1' 和 '==0' 得到维度为样本数量的bool向量 然后用gather或者cast成float之后乘上交叉熵输出再求和就行

这种方法有个称呼什么的么?

0
回复
水水水的老师
#8 回复于2020-04
label smooth是一种正则化的方法而已,让分类之间的cluster更加紧凑,增加类间距离,减少类内距离,避免over high confidence的adversarial examples。对多分类数量不平衡有效。二分类仅供你参考。我刚听说就赶紧来告诉你了。
展开

哈哈  不错不错

0
回复
水水水的老师
#9 回复于2020-04

不同类的损失有不同权重 

0
回复
l
li_gyh
#10 回复于2020-04
这种方法有个称呼什么的么?

调整各种损失函数各种权重在样本不均衡或者有意调整网络倾向的时候用得挺多的.......这个有没有专业的称呼我也不知道.......

0
回复
AIStudio810258
#11 回复于2020-04
li_gyh #10
调整各种损失函数各种权重在样本不均衡或者有意调整网络倾向的时候用得挺多的.......这个有没有专业的称呼我也不知道.......

嗯,思路很有启发。

0
回复
AIStudio810258
#12 回复于2020-04
li_gyh #10
调整各种损失函数各种权重在样本不均衡或者有意调整网络倾向的时候用得挺多的.......这个有没有专业的称呼我也不知道.......

我又网上了解下,解决这种数据分布的“长尾问题”的方法一般有“重采样(上、下采样)”、数据重新划分再分别建模、label加权等方式。

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户