tensorflow学习:交叉熵计算

这是一篇学习tensorflow的日常记录,最近遇到了交叉熵计算问题,于是整理出来方便以后查阅,看到的朋友如有发现错误,请指正!

-------------------------------------------------------------------------------------------------------------------------------

先明确一个定义:多目标,多分类问题

多目标又指多类别分类,即每个类别相互独立,但不互斥,如一幅图中同时包括几种动物。
多分类又指单类别分类,即每个类别之间是相互独立且互斥,不可同时发生,如一幅图只能属于一类动物。
--------------------------------------------------------------------------------------------------------------------------------
代价函数可用于评价模型预测值与真实值之间的差距,常见的代价函数为均方误差(MSE)。在分类问题中,使用交叉熵作为代价函数。交叉熵的基本概念,计算例子以及为什么交叉熵可以用来作为代价函数可参考这篇文章:https://blog.csdn.net/tsyccnh/article/details/79163834,这里主要讲解TensorFlow中四种交叉熵计算函数。
---------------------------------------------------------------------------------------------------------------------------------
针对分类问题,TensorFlow中四种交叉熵计算函数
1、tf.nn.sigmoid_cross_entropy_with_logits(logits, targets, name=None)
是TensorFlow中实现最早的交叉熵算法。适用于多目标问题(如一张图片中同时包含了大象和狗),输入的logits不需要经过sigmoid,输入后先通过sigmoid函数激活,再计算它和targets的交叉熵,Logits和labels需是相同的shape。但它最典型的使用适用于二分类,如人脸识别中识别有没有戴眼镜等等。
2、tf.nn.softmax_cross_entropy_with_logits(logits, labels, name=None) 
计算logits和labels之间的softmax交叉熵。适用于多分类问题(一张图片中只有一种动物,如cifar数据集)。输入的logits为未归一化的logits,它在内部对logits使用了softmax。因此,不可以输入softmax后的logits进行计算。Logits和labels需是相同的shape[batch_size, num_class],并且是相同的dtype,如float32或者float64
3、tf.nn.sparse_softmax_cross_entropy_with_logits
适用于多分类问题,是tf.nn.softmax_cross_entropy_with_logits的简化版本
4、tf.nn.weighted_cross_entropy_with_logits(logits, targets, pos_weight)
是tf.nn.sigmoid_cross_entropy_with_logits的进化版本,计算有权重的sigmoid交叉熵,输入中多一个pos_weight, 可以通过调整pos_weight控制正样本的loss可适用于正负样本不平衡的数据。

参考文档: http://dataunion.org/26447.html
https://blog.csdn.net/QW_sunny/article/details/68960838 
http://www.tensorfly.cn/tfdoc/api_docs/python/nn.html#sigmoid_cross_entropy_with_logits 
https://www.e-learn.cn/content/qita/775253 
https://stackoverflow.com/questions/44560549/unbalanced-data-and-weighted-cross-entropy 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值