天天看点

自适应权重的交叉熵计算

在训练集中类别不平衡的情况下,可对不同类别赋予不同的权重。有采用固定权重,也有实时计算权重。

在这里,介绍一种自适应权重的计算方法,参考论文《ENet: A Deep Neural Network Architecture for Real-time Semantic Segmentation》。

对类别的权重定义如下:

自适应权重的交叉熵计算

其中,c是一个超参数,设为1.02,

自适应权重的交叉熵计算

是该类样本所占的比例。最后,将

自适应权重的交叉熵计算

限制在[1.0,50]的范围内。

本人实验中,在类别不平衡的情况下(达到了30:1),在一个batch内,采用上述公式计算类别权重,与固定权重相比,最终的F1从百分之九十五点几上升到百分之九十六点几。

用pytorch接口

loss = F.cross_entropy(logits,gt,weight=weight)
           

其中,weight为上述公式计算出来的权重。

(PS:以此记录,便于查阅)

继续阅读