【发布时间】:2017-04-05 19:24:12
【问题描述】:
我最近遇到了 tensorflow softmax_cross_entropy_with_logits,但我不知道在实现上与 sigmoid_cross_entropy_with_logits 相比有什么不同。
【问题讨论】:
标签: python tensorflow
我最近遇到了 tensorflow softmax_cross_entropy_with_logits,但我不知道在实现上与 sigmoid_cross_entropy_with_logits 相比有什么不同。
【问题讨论】:
标签: python tensorflow
我知道我回答有点晚了,但迟到总比没有好。所以我有完全相同的疑问,答案在 tensorflow 文档中。答案是,我引用:
softmax_cross_entropy_with_logits:测量类别互斥的离散分类任务中的概率误差(每个条目恰好属于一个类别)。 sigmoid_cross_entropy_with_logits:测量离散分类任务中每个类独立且不互斥的概率误差
edit:我想我应该补充一点,虽然这些类是互斥的,但它们的概率不必如此。所需要的只是每一行标签都是一个有效的概率分布。 sparse_softmax_cross_entropy_with_logits 不是这种情况,label 是一个仅包含真实类索引的向量。
我还添加了文档的链接。希望这个答案对您有所帮助。
【讨论】:
sigmoid 和 softmax 之间的主要区别在于,softmax 函数以概率返回结果,这更符合 ML 哲学。从 softmax 结果到 1 的所有输出的总和。这反过来告诉您网络对答案的信心程度。
而 sigmoid 输出是谨慎的。它要么正确,要么不正确。您必须自己编写代码来计算概率。
就网络性能而言。 Softmax 通常比 sigmoid 提供更好的精度。但是,它也高度依赖于其他超参数。
【讨论】: