我是一个训练网络,具有骰子损失的损失函数和骰子系数的度量。在下面可以找到我用来计算骰子损失的函数:
def dice_coef(y_true, y_pred):
y_true_f = K.flatten(y_true)
y_pred_f = K.flatten(y_pred)
intersection = K.sum(y_true_f * y_pred_f)
return (2. * intersection + 1.) / (K.sum(y_true_f * y_true_f) + K.sum(y_pred_f * y_pred_f) + 1.)
然后
def dice_coef_loss(y_true, y_pred):
return 1.-dice_coef(y_true, y_pred)
我遇到的问题是,在训练期间,损耗和骰子系数的总和始终为1,这是可以预期的,但是在验证过程中,损耗和骰子系数的总和大于1。这怎么可能?
网络的最后一层是用于二进制分割的S型函数。
我正在上传验证和训练图。从图中还可以清楚地看到,验证准确性正在提高,但是验证损失却在波动。