我想为3种最佳分类定义损失函数

时间:2019-11-22 08:11:39

标签: python tensorflow keras

我正在设计一个分类模型。

我有一个问题,有很多类别具有相似的功能。 我认为最好的选择是重新生成类别层次结构,但这些是固定的。

因此,我专注于3最佳精度,而不是1最佳精度。

我想定义损失函数以获得3个最佳精度。

我不在乎位置1-3的答案在哪里。

有没有好的损失​​函数?如何定义它?

2 个答案:

答案 0 :(得分:1)

您可以使用keras.metrics.top_k_categorical_accuracy来计算精度。

但这是精度度量。我认为到目前为止,在TensorFlow或Keras中没有内置的top_k损失函数。
损失函数应该可以与基于梯度的学习方法一起使用。尽管top_k不是可微函数。就像准确性指标一样。
因此,它可以用作准确性指标,但不能用作学习目标。因此,您不会找到任何内置的方法,但是还有其他针对此问题的研究论文。您可能想看看Learning with Average Top-k LossSmooth Loss Functions for Deep Top-k Classification

答案 1 :(得分:0)

您可以使用以下任何一种方式

top_k_categorical_accuracy

keras.metrics.top_k_categorical_accuracy(y_true, y_pred, k=3)

sparse_top_k_categorical_accuracy

keras.metrics.sparse_top_k_categorical_accuracy(y_true, y_pred, k=3)