如何创建一个自定义指标,该指标在分类问题上接受正确的预测,不仅在预测类别和真实类别相同时,而且在预测类别是真实类别的邻居类别时?“ p>
答案 0 :(得分:2)
如果你考虑到这个问题,这个答案是有效的,只有一个班级"应该输出。
def neighbourMetric(yTrue,yPred):
#these make this function not differntiable, but since you asked for "metric" it's ok
trueIndices = K.argmax(yTrue)
predIndices = K.argmax(yPred)
minAccepted = trueIndices - 1
maxAccepted = trueIndices + 1
satisfiesMin = K.cast(K.greater_equal(predIndices,minAccepted),K.floatx())
satisfiesMax = K.cast(K.less_equal(predIndices,maxAccepted),K.floatx())
satisfiesBoth = satisfiesMin * satisfiesMax
return K.mean(satisfiesBoth)
答案 1 :(得分:1)
以下是我解决它的方法:
def one_off(y_true, y_pred):
return K.cast(K.abs(K.argmax(y_true, axis=-1) - K.argmax(y_pred, axis=-1)) < 2, K.floatx())