4

我正在为(某种)语义分割任务编写自定义损失函数,其中我计算目标(二维数组)和预测的二进制交叉熵(使用 keras 后端)。整体损失是 4 个不同损失函数的总和。

在其中两个函数中,我需要制作一个定制的目标数组并使用这些目标和预测计算二元交叉熵。在这里,我想忽略并且不计算目标数组中标签为 1(前景)的损失。

在 pytorch 的 nll_loss() 中有一个参数 'ignore_index' 类似于我正在尝试做的事情。

我正在尝试实现以下目标:

def binary_crossentropy(y_true, y_pred, ignore_label=1):
    if ignore_label == 1:
        return -(1-y_true)*log(1-y_pred)
    if ignore_label == 0:
        return -y_true*log(y_pred)

    return -(y_true*log(y_pred) + (1-y_true)*log(1-y_pred))

但是对于 keras 自定义损失函数。

4

0 回答 0