其中
在此基础上:
- 引入每一个类别所占的权重
$\alpha$ -> 解决不同类别样本的数量不平衡问题 - 引入调节因子
$(1-p)^\gamma$ -> 解决难易样本的学习问题
则对于样本
为什么要这样设置,可以这样理解:
(1)通过引入权重,我们可以让数量较少的一类样本拥有更高的权重,让这部分样本的
(2)调节因子
- 待预测样本
$input$ 是一个形如$(N C H W)$ 的$tensor$ ,元素值为每个像素属于各类别的概率值, 如0.56,0.39. - 真实标签
$target$ 是一个形如$(N H W)$ 的$tensor$ , 元素值为每个像素所属类别的索引值, 如0,1,2. - 调节因子
$\gamma$ 是取值范围为[0,5]的整数, 一般取2. - 权重参数
$\alpha$ 是一个$list$ , 存放各个类别的权重,比如[1,1,1]. - 类别数
$classnum$ 是一个整数。 - 是否计算平均值
$avg$ 是一个布尔型变量。
- 将输入的
$input$ 、$target$ 做的维度变换如下:
-
$input:(N,C,H,W)-$ .permute(0,2,3,1)
$->(N,H,W,C)-$ .flatten(0,2)
-$>(NHW,C)$ -
$target:(N,H,W)-$ one_hot(dim=C)
$->(N,H,W,C)-$ .permute(0,2)
-$>(NHW,C)$
- 利用掩膜运算,计算
$y_ic * p_ic$ 及$log(y_ic * p_ic)$ :
- 以target为参考,target=0所对应位置处的input概率设置为0,可以计算得到
$y_ic * p_ic$ - 以target为参考,target=0所对应位置处的input概率设置为1,再取对数,可以计算得到
$log(y_ic * p_ic)$