首页 > 解决方案 > sparse_categorical_crossentropy 和 categorical_crossentropy 有什么区别?

问题描述

sparse_categorical_crossentropy和 和有什么不一样categorical_crossentropy?什么时候应该使用一种损失而不是另一种损失?例如,这些损失是否适合线性回归?

标签: pythontensorflowmachine-learningkerasdeep-learning

解决方案


简单地:

  • categorical_crossentropy( cce) 生成一个单热数组,其中包含每个类别的可能匹配项,
  • sparse_categorical_crossentropy( scce) 生成最可能匹配类别的类别索引。

考虑一个有 5 个类别(或类)的分类问题。

  • 在 的情况下cce,one-hot 目标可能是[0, 1, 0, 0, 0]并且模型可能预测[.2, .5, .1, .1, .1](可能是正确的)

  • 在 的情况下scce,目标索引可能是 [1],模型可能预测:[.5]。

现在考虑一个有 3 个类别的分类问题。

  • 在 的情况下cce,单热目标可能是[0, 0, 1]并且模型可能预测[.5, .1, .4](可能不准确,因为它为第一类提供了更多概率)
  • 在 的情况下scce,目标索引可能是[0],模型可能预测[.5]

许多分类模型会产生scce输出,因为您节省空间,但会丢失大量信息(例如,在第二个示例中,索引 2 也非常接近。)我通常更喜欢cce输出模型可靠性。

有多种情况可以使用scce,包括:

  • 当您的课程相互排斥时,即您根本不关心其他足够接近的预测,
  • 类别数量大到预测输出变得不堪重负。

推荐阅读