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

标签 python machine-learning keras deep-learning

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

import keras.backend as K

def customLoss(yTrue,yPred):

    return K.abs(yTrue-yPred)

为了制作我想要的更复杂的损失函数,我需要计算 True Positive、True Negative、False Positive、False Negative

如何计算它们?

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

TP=0
for x,y in zip(yTrue,yPred):
   if x == 1 and y > 0.5:
      TP=TP+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))

关于python - 如何在 Keras 中的自定义损失函数中计算 True Positive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54868152/

相关文章:

python - 我可以使用新目标再次加载和训练 Keras 模型吗?

Python OpenWRT crontab

python - NumPy:使用 nditer 迭代 numpy 数组的外部维度

python-3.x - Tensorflow:使用序列设置数组元素

machine-learning - 评估在 Spacy 中训练的 NER 模型的好指标是什么

python - 回归与分类对于两者都可以解决的问题

tensorflow - 使用 keras 和 tensorflow 作为后端在 aws sagemaker 中配置 GPU

python - Keras:准确率保持为零

python - 是否有纯 Python 中的 Git 实现?

python - 更新线程变量