各种分类问题的损失函数

在tf.nn下带有“cross_entropy”的损失函数,入参logits都是没有sigmoid或softmax之前的数据,函数会自动来计算。

输出是每个样本的loss,一般需要配合tf.reduce_mean(loss)使用。

1 输入的labels是需要one-hot之后的tensor的函数。
1.1 sigmoid_cross_entropy_with_logits

tf.nn.sigmoid_cross_entropy_with_logits(_sentinel=None,labels=None, logits=None, name=None)

可以实现multi-label的问题,即labels可以是[[1,0,1,0], [1,0,0,0],[0,0,0,1]]这种同一个样本对应了一个或多个label的多分类问题。

1.2 softmax_cross_entropy_with_logits

tf.nn.softmax_cross_entropy_with_logits(labels=None, logits=None, dim=-1, name=None)

不能解决multi-label的问题,只能是一个样本对应一个分类的多分类问题。

2 输入的labels是类别index的tensor的函数。

2.1 sparse_softmax_cross_entropy_with_logits

tf.nn.sparse_softmax_cross_entropy_with_logits(labels=None,logits=None, name=None)

和tf.nn.softmax_cross_entropy_with_logits的计算方式一致,结果也一样,只是入参的labels不同。
2.2 weighted_cross_entropy_with_logits

tf.nn.weighted_cross_entropy_with_logits(labels, logits, pos_weight, name=None)

通过pos_weight对正样本计算tf.nn.sigmoid_cross_entropy_with_logits时候进行加权,即从原来的targets * -log(sigmoid(logits)) + (1 - targets) * -log(1 - sigmoid(logits))变成了 targets * -log(sigmoid(logits)) * pos_weight +(1 - targets) * -log(1 - sigmoid(logits))

tf.nn.nce_loss的labels应该是index形式的,没有onehot

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值