如何在Keras中的自定义损失函数中计算True Positive

时间:2019-02-25 14:15:06

标签: python machine-learning keras deep-learning

我用Keras做分类任务,我在Keras中创建了简单的自定义损失函数,并且有效

import keras.backend as K

def customLoss(yTrue,yPred):

    return K.abs(yTrue-yPred)

要制作我想要的更复杂的损失函数,我需要计算“正正”,“正负”,“正误”,“负负”

如何计算它们?

我无法计算它们,因为我不知道yTrue和yPred的类型。他们是2D数组或列表还是其他东西。如果我知道,也许我可以使用 for 来计算TP,TN,FP,FN,如下所示:

TP=0
for x,y in zip(yTrue,yPred):
   if x == 1 and y > 0.5:
      TP=TP+1

1 个答案:

答案 0 :(得分:1)

根据Keras Documentation,yTrue / yPred的数据类型为TensorFlow / Theano张量,具体取决于所使用的后端。

因此,您不能对损失函数使用for循环,否则会出现错误。

但是您可以为此使用逻辑:

TN = np.logical_and(K.eval(y_true) == 0, K.eval(y_pred) == 0)
FP = np.logical_and(K.eval(y_true) == 0, K.eval(y_pred) == 1)

之后,您可以将它们加起来:

TN = K.sum(K.variable(TN))
FP = K.sum(K.variable(FP))