SigmoidCrossEntropyLoss与SoftmaxWithLoss使用区别

这里不列举两个loss所对应的数学表达式,网络资料很多,可自行google。在此只简单说明一下具体使用区别。
1. SigmoidCrossEntropyLoss结合sigmoid函数,多是应用于二分类或多目标分类。
    * 对于二分类,预测输入图像为1的概率,一张图像,其label个数也为1,保证该层的bottom[0]和bottom[1]的[N C H W]是一样的。
    * 对于多目标分类,其相当于预测该图像中是否**存在**某**些**目标,存在为1,不存在为0。此时,图像的label应该是one-hot形式。例如:目标类别数是5,对于训练图像,其label形式应该为`image.jpg 0 1 0 1 1`,每个位置分布代表是该图像是否存在相应的目标。同样,也保证该层的bottom[0]和bottom[1]的[N C H W]是一样的。
2. SoftmaxWithLoss结合softmax函数,多用于多类别分类。
    * 该loss预测的是网络最后的输出分别属于**多个类别的概率**,对于给定的label,其优化目标就是使得网络输出等于该label的概率值最大,因此,其bottom[0]和bottom[1]的C通道应该倍数关系(bottom[0]->shape[1] / bottom[1]-shape[1] = 类别的个数)
 
caffe中只定义了一种sigmoidcrossentropyloss,tensorflow中定义了4种不同的cross entropy loss,分别应用于不同的分类问题
  1. tf.nn.sigmoid_cross_entropy_with_logits
  2. tf.nn.softmax_cross_entropy_with_logits
  3. tf.nn.sparse_softmax_cross_entropy_with_logits
  4. tf.nn.weighted_cross_entropy_with_logits

猜你喜欢

转载自www.cnblogs.com/xiangs/p/9545751.html