我正在使用 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 张量中的标签值组合在一起?
如果这个问题看起来很愚蠢,我深表歉意,正如我所说,我对这个游戏还比较陌生。任何帮助或建议将不胜感激!