我正在设计一个分类模型。
我有一个问题,有很多类别具有类似的功能。 我认为最好的选择是重新生成类别层次结构,但这些是固定的。
因此,我专注于 3 最佳准确度,而不是 1 最佳准确度。
我想定义一个损失函数以获得 3 最佳精度。
我不在乎位置 1 - 3 的答案在哪里。
有没有好的损失函数? 我该如何定义它?
您可以使用
但这是准确性指标。我认为到目前为止,TensorFlow或Keras中没有任何内置的top_k损失函数。
损失函数应该是可微的,以便与基于梯度的学习方法一起使用。虽然
因此,它可以用作准确性指标,但不能用作学习目标。因此,您不会为此找到任何内置方法,但是还有其他旨在解决此问题的研究论文。您可能想看看使用平均 top-k 损失学习和用于深度 top-k 分类的平滑损失函数。
keras.metrics.top_k_categorical_accuracy
来计算精度。但这是准确性指标。我认为到目前为止,TensorFlow或Keras中没有任何内置的top_k损失函数。
损失函数应该是可微的,以便与基于梯度的学习方法一起使用。虽然
top_k
不是一个可微函数。就像准确性指标一样。因此,它可以用作准确性指标,但不能用作学习目标。因此,您不会为此找到任何内置方法,但是还有其他旨在解决此问题的研究论文。您可能想看看使用平均 top-k 损失学习和用于深度 top-k 分类的平滑损失函数。
您可以使用以下任何一种
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)