我使用Keras后端的广义骰子损失函数返回NaN,我不明白为什么

时间:2019-05-23 09:20:14

标签: neural-network dice loss-function

我正在使用Keras实现用于语义分割的代码,并且我写了我的损失函数,如论文“广义骰子重叠作为深度学习损失函数用于高度不平衡的区段”(链接:https://arxiv.org/abs/1707.03237)来平衡每个损失类。我的数据组织为(bacth_size,ImDim1,ImDim2,Nclasses)。 我的损失函数是:

eps = 1e-3

def dice(y_true, y_pred):
    weights = 1./K.sum(y_true, axis=[0,1,2])
    weights = weights/K.sum(weights)
    num = K.sum(weights*K.sum(y_true*y_pred, axis=[0,1,2]))
    den = K.sum(weights*K.sum(y_true+y_pred, axis=[0,1,2]))
    return 2.*(num+eps)/(den+eps)

def dice_loss(y_true, y_pred):
    return 1-dice(y_true, y_pred)

这样,对我来说看起来正确,损失函数返回nan,我不明白为什么!

0 个答案:

没有答案