我正在使用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,我不明白为什么!