python - sparse_categorical_crossentropy 和 categorical_crossentropy 有什么区别?
问题描述
sparse_categorical_crossentropy
和 和有什么不一样categorical_crossentropy
?什么时候应该使用一种损失而不是另一种损失?例如,这些损失是否适合线性回归?
解决方案
简单地:
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
,包括:
- 当您的课程相互排斥时,即您根本不关心其他足够接近的预测,
- 类别数量大到预测输出变得不堪重负。
推荐阅读
- oracle - 在 Oracle 中减去 ISO 8601 时间戳
- javascript - 如何检查用户是否上传相同的文件
- c++ - 如何防止在类析构函数中调用 MPI_Finalize()?
- amazon-web-services - 允许用户在不授予 AWS 访问权限的情况下将文件加载到(并调用)Lambda 函数
- java - 在 OncePerRequestFilterTest 中调用时,使用 Mockito 指定的模拟类为空
- r - 如何计算 r 中跨 NA 值的欧几里得距离
- python - ValueError: int() 以 10 为基数的无效文字:'',请帮助修复它
- powershell - 将两个 Powershell 命令的输出添加到数组中
- python - 如何忽略海底小提琴情节中的异常值?
- angular - 如何在ngrx的影响中执行地图运算符?