我正在研究医学图像分割。我有两节课。0 级作为背景,1 级作为病变。由于数据集高度不平衡,我使用损失函数作为(1 - 加权骰子系数)和度量函数作为骰子系数。我已将数据集从 0-255 标准化为 0-1。我正在使用带有 tensorflow 后端的 keras 来训练模型。在训练 UNet++ 模型时,我的损失函数随着每个时期而减少,但我的指标保持不变。我无法理解为什么随着损失按预期减少,指标是恒定的?另外,我无法理解,为什么当骰子系数返回 0 到 1 之间的值时损失大于 1?
这是我的损失函数:
def dice_loss(y_true, y_pred):
smooth = 1.
w1 = 0.3
w2 = 0.7
y_true_f = K.flatten(y_true[...,0])
y_pred_f = K.flatten(y_pred[...,0])
intersect = K.abs(K.sum(y_true_f * y_pred_f, axis = -1))
denom = K.abs(K.sum(y_true_f, axis = -1)) + K.abs(K.sum(y_pred_f, axis = -1))
coef1 = (2 * intersect + smooth) / (denom + smooth)
y_true_f1 = K.flatten(y_true[...,1])
y_pred_f1 = K.flatten(y_pred[...,1])
intersect1 = K.abs(K.sum(y_true_f1 * y_pred_f1, axis …Run Code Online (Sandbox Code Playgroud) python image-segmentation keras tensorflow semantic-segmentation