怎么设置不同类的损失有不同权重呢?
收藏
在做一个口罩分类项目,武大有一个开源大人脸数据集,数据集正负样本达到里1:50左右。因为觉得直接修改数据集的话时间开销比较大。所以我想要用设置损失权重的方法。
分类用大交叉熵损失,paddle可以实现不同类计算损失时权重不相同的方法吗?如果没有的话,因为每次计算损失是一个batch计算的,一个batch里面有正样本和负样本,我要怎么自定义修改成不同类有不同的损失权重呢?
同时也想问下处理正负样本不平衡还有没更便捷的方法。
0
收藏
请登录后评论
对样本标签用 ‘==1' 和 '==0' 得到维度为样本数量的bool向量
然后用gather或者cast成float之后乘上交叉熵输出再求和就行
label smooth是一种正则化的方法而已,让分类之间的cluster更加紧凑,增加类间距离,减少类内距离,避免over high confidence的adversarial examples。对多分类数量不平衡有效。二分类仅供你参考。我刚听说就赶紧来告诉你了。
试了一下,方法确实可行,感谢
好滴,非常感谢
我也正在用smote之类的方法解决各类样本不平衡的问题。这个问题太好了。
这种方法有个称呼什么的么?
哈哈 不错不错
不同类的损失有不同权重
调整各种损失函数各种权重在样本不均衡或者有意调整网络倾向的时候用得挺多的.......这个有没有专业的称呼我也不知道.......
嗯,思路很有启发。
我又网上了解下,解决这种数据分布的“长尾问题”的方法一般有“重采样(上、下采样)”、数据重新划分再分别建模、label加权等方式。