tensorflow中的两种损失函数比较

仅介绍多分类交叉熵损失tf.losses.softmax_cross_entropy以及tf.losses.sparse_softmax_cross_entropy两者区别

tf.losses.softmax_cross_entropy

代码如下:

tf.losses.softmax_cross_entropy(
    onehot_labels,
    logits,
    weights=1.0,
    label_smoothing=0,
    scope=None,
    loss_collection=tf.GraphKeys.LOSSES,
    reduction=Reduction.SUM_BY_NONZERO_WEIGHTS
)


labels: [batch_size,] .And dtype int32 or int64. Each entry in labels must be an index in [0, num_classes).(非独热码)

tf.nn.softmax_cross_entropy

代码如下:

tf.losses.sparse_softmax_cross_entropy(
labels,
logits,
weights=1.0,
scope=None,
loss_collection=tf.GraphKeys.LOSSES,
reduction=Reduction.SUM_BY_NONZERO_WEIGHTS
)
labels: [batch_size, num_classes], each row of labels[i] must be a valid probability distribution.

区别

其区别主要在于,softmax 的label是one-hot编码的,如[0,0,1],[0,1,0],[1,0,0];而sparse它的label是一个可能性最高位置{0,1,2,……,num_classes-1}的索引;

使用one-hot编码可以消除类间相关性:

假设10个分类C0~C9,不用Onehot的话我们就直接给他编号0~9,C0记为0。label之间的距离不同,计算损失的话C0错分成C9的损失是C0错分成C1的损失的9倍,影响模型之间的学习。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值