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

Neural network 我的广义骰子损失函数,使用Keras后端,返回NaN,我不明白为什么,neural-network,dice,loss-function,Neural Network,Dice,Loss Function,我正在使用Keras实现一个语义分段代码,我在论文“广义骰子重叠作为高度不平衡分段的深度学习损失函数”(链接:)中编写了损失函数,以平衡每个类。我的数据组织为(bacth_大小、ImDim1、ImDim2、Nclasses)。 我的损失函数是: eps=1e-3 def骰子(y_true,y_pred): 权重=1./K.sum(y_真,轴=[0,1,2]) 权重=权重/K.和(权重) num=K.sum(权重*K.sum(y_true*y_pred,轴=[0,1,2])) den=K.sum(

我正在使用Keras实现一个语义分段代码,我在论文“广义骰子重叠作为高度不平衡分段的深度学习损失函数”(链接:)中编写了损失函数,以平衡每个类。我的数据组织为(bacth_大小、ImDim1、ImDim2、Nclasses)。 我的损失函数是:

eps=1e-3
def骰子(y_true,y_pred):
权重=1./K.sum(y_真,轴=[0,1,2])
权重=权重/K.和(权重)
num=K.sum(权重*K.sum(y_true*y_pred,轴=[0,1,2]))
den=K.sum(权重*K.sum(y_真+y_pred,轴=[0,1,2]))
返回2.*(num+eps)/(den+eps)
def dice_损失(y_真,y_pred):
返回1个骰子(y_真,y_pred)

这样做,在我看来是正确的,loss函数返回nan,我不明白为什么

您是否尝试在第一个等式中添加
eps
?如果所有
y\u true
均为0,
weights
应为NaN。