tensorflow softmax_cross_entropy_with_logits和sigmoid_cross_entropy_with_logits之间的实现差异

时间:2016-11-22 07:51:57

标签: python tensorflow

我最近遇到了tensorflow softmax_cross_entropy_with_logits,但我无法弄清楚实现与sigmoid_cross_entropy_with_logits的区别。

3 个答案:

答案 0 :(得分:1)

sigmoid和softmax之间的主要区别在于softmax函数在概率方面返回结果,这更符合ML哲学。 softmax的所有输出总和为1.转向告诉您网络对答案的信心。

然而,sigmoid输出是谨慎的。它的正确或不正确。你必须编写代码来自己计算概率。

就网络性能而言。 Softmax通常比sigmoid提供更好的准确性。但是,它也高度依赖于其他超参数。

答案 1 :(得分:1)

我知道我的回答有点晚了,但迟到总比没有好。所以我有完全相同的疑问,答案就在tensorflow文档中。答案是,我引用:

  

softmax_cross_entropy_with_logits:测量离散分类任务中的概率误差,其中类是互斥的(每个条目恰好在一个类中)。   sigmoid_cross_entropy_with_logits:测量离散分类任务中的概率误差,其中每个类是独立的而不是互斥的

编辑:我想我应该补充一点,虽然这些类是互斥的,但它们的概率不一定是。所需要的只是每行标签是有效的概率分布。 sparse_softmax_cross_entropy_with_logits中的label是仅包含真实类索引的向量的情况并非如此。

我还添加了文档的链接。希望这个答案很有帮助。

答案 2 :(得分:0)

softmax_cross_entropy_with_logits首先计算softmax然后计算交叉熵,而sigmoid_cross_entropy_with_logits首先计算sigmoid然后交叉熵。