tensorflow - 当度量为 SparseTopKCategoricalAccuracy/TopKCategoricalAccuracy 时,在 Keras 中使用什么损失函数?

标签 tensorflow keras tensorflow2.0 metrics loss-function

对于多类分类问题,Keras 和 tf.keras 具有 SparseTopKCategoricalAccuracy 和 TopKCategoricalAccuracy 等指标。但是,如果使用 SparseCategoricalCrossentropy 或 CategoricalCrossentropy 等损失函数,则它们无法实现这两个指标的最大值。

当想要最大化 SparseTopKCategoricalAccuracy 或 TopKCategoricalAccuracy 时,使用什么损失函数比较好?

我知道 SparseTopKCategoricalAccuracy 不可微分,就像准确性一样。我试图找到一个可以近似平滑损失函数并为 SparseTopKCategoricalAccuracy 产生更高数字的函数。

最佳答案

CrossEntropy 在处理 Top-k 精度时不是最好的损失函数,因为交叉熵可能容易在小数据集或嘈杂标签上过度拟合。。 p>

正如您已经指出的,“平滑损失”函数是为使用 SVM 进行前 k 分类而开发的。据我所知,Keras/TF 中没有最适合 top-k 的“现成”损失函数。但是,我建议您尝试在 article 中介绍的 Smooth Surrogate Loss (SSL)并在 Pytorch 中实现以与深度神经网络一起使用(参见 Github)。它源自多类 SVM,因为 SSL 在正确的 top-k 预测和不正确的预测之间创建了一个边界。由于分而治之的方法和多项式的使用,SSL 的训练时间与交叉熵的训练时间相当(参见 implementation)。

关于tensorflow - 当度量为 SparseTopKCategoricalAccuracy/TopKCategoricalAccuracy 时,在 Keras 中使用什么损失函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63972516/

相关文章:

python - 训练keras模型时如何使用数据生成器更快地生成数据?

python - 值错误 : dimension of the inputs to `Dense` should be defined. 发现 `None`

tensorflow - 为什么 tf.flags 与 argparse 冲突?

swift - Amazon EC2 T2 实例是否适合运行 TensorFlow Mobile 或 TensorFlow Lite?

python - tensorflow ffmpeg contrib 输出

python - Keras flowFromDirectory 在生成文件时获取文件名

python - AttributeError : Layer has no inbound nodes, 或 AttributeError: 该层从未被调用

tensorflow - GPU 上的数据增强

python - 什么是 tf.losses.absolute_difference 的替代品

python - 亚马逊网络服务 : -bash: activate: No such file or directory