gpt4 book ai didi

keras - 图像分割 - Keras 中的自定义损失函数

转载 作者:行者123 更新时间:2023-12-01 17:41:34 30 4
gpt4 key购买 nike

我正在使用 Keras 中实现的 U-Net ( https://arxiv.org/pdf/1505.04597.pdf ) 来分割显微镜图像中的细胞器。为了让我的网络识别仅由 1 个像素分隔的多个单个对象,我想对每个标签图像使用权重图(公式在出版物中给出)。

据我所知,我必须创建自己的自定义损失函数(在我的例子中是交叉熵)来利用这些权重图。然而,自定义损失函数只接受两个参数。如何在这样的函数中添加权重图值?

下面是我的自定义损失函数的代码:

def pixelwise_crossentropy(self, ytrue, ypred):

ypred /= tf.reduce_sum(ypred, axis=len(ypred.get_shape()) - 1, keep_dims=True)

# manual computation of crossentropy
_epsilon = tf.convert_to_tensor(epsilon, ypred.dtype.base_dtype)
output = tf.clip_by_value(ypred, _epsilon, 1. - _epsilon)

return - tf.reduce_sum(ytrue * tf.log(output))

有没有办法将权重图值与 ytrue 张量中的标签值组合在一起?

如果这些问题看起来很愚蠢,我深表歉意,正如我所说,我对游戏比较陌生。任何帮助或建议将不胜感激!

最佳答案

如果您正在尝试实现二元交叉熵加权损失,您可以使用 tensorflow 内置损失函数

pos_weight = tf.constant([[1.0, 2.0]])
tensorflow.nn.weighted_cross_entropy_with_logits(y_true,
y_pred,
pos_weight,
name=None)

查看文档
https://www.tensorflow.org/api_docs/python/tf/nn/weighted_cross_entropy_with_logits

keras 的实现
def pixel_wise_loss(y_true, y_pred):
pos_weight = tf.constant([[1.0, 2.0]])
loss = tf.nn.weighted_cross_entropy_with_logits(
y_true,
y_pred,
pos_weight,
name=None
)

return K.mean(loss,axis=-1)

如果您正在尝试实现 softmax_cross_entropy_with_logits,请按照前面解释的链接进行操作
softmax_cross_entropy_with_logits

关于keras - 图像分割 - Keras 中的自定义损失函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50294566/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com