如何在Keras中使用FCN(U-Net)上的加权分类交叉熵?

如何在Keras中使用FCN(U-Net)上的加权分类交叉熵?,keras,loss,cross-entropy,Keras,Loss,Cross Entropy,我建立了一个用于图像分割的Keras模型(U-Net)。然而,在我的样本中,一些错误分类(区域)并不重要,而另一些则至关重要,因此我想在损失函数中为它们分配更高的权重。更复杂的是,我希望一些错误分类(1类而不是2类)有很高的惩罚,而反向分类(2类而不是1类)不应该受到那么大的惩罚 在我看来,我需要使用加权分类交叉熵的总和(跨越所有像素),但我能找到的最好结果是: 然而,这段代码只适用于一个单一的预测,我对Keras内部工作原理的了解也不多(而且它的数学方面也不太好)。任何人都知道我如何适应它,或

我建立了一个用于图像分割的Keras模型(U-Net)。然而,在我的样本中,一些错误分类(区域)并不重要,而另一些则至关重要,因此我想在损失函数中为它们分配更高的权重。更复杂的是,我希望一些错误分类(1类而不是2类)有很高的惩罚,而反向分类(2类而不是1类)不应该受到那么大的惩罚

在我看来,我需要使用加权分类交叉熵的总和(跨越所有像素),但我能找到的最好结果是:

然而,这段代码只适用于一个单一的预测,我对Keras内部工作原理的了解也不多(而且它的数学方面也不太好)。任何人都知道我如何适应它,或者更好,是否有一个现成的损失函数适合我的情况

我希望你能给我指点

编辑:我的问题与类似,只是我想使用加权分类交叉熵。

您可以使用权重图(如中建议的)。在这些权重贴图中,可以对权重较大或较小的区域进行权重设置。下面是一些伪代码:

loss = compute_categorical_crossentropy()
weighted_loss = loss * weight_map # using element-wise multiplication

我也在做一些类似于原始海报的事情,但是使用了二进制交叉熵。我假设同样的伪代码也适用?
loss = compute_categorical_crossentropy()
weighted_loss = loss * weight_map # using element-wise multiplication