我的U-Net train_dice_loss正在减少,但val_dice_loss仍为0.4。网络似乎过拟合,但是val_dice_loss不应在某个时候增加吗?
该网络基于Carvana细分比赛(Colab Carvana Segmentation)。我使用相同的模型,目标函数和数据增强管道,但是数据却少得多(〜1900 Images为256x256px)。我将数据分为训练,验证和测试集。在测试集上,我的模型预测得很好(平均dice_coeff 0.75),但我无法解释该图。
其他信息:
def dice_coeff(y_true, y_pred):
smooth = 1.
# Flatten
y_true_f = tf.reshape(y_true, [-1])
y_pred_f = tf.reshape(y_pred, [-1])
intersection = tf.reduce_sum(y_true_f * y_pred_f)
score = (2. * intersection + smooth) / (tf.reduce_sum(y_true_f) +
tf.reduce_sum(y_pred_f) + smooth)
return score
def dice_loss(y_true, y_pred):
loss = 1 - dice_coeff(y_true, y_pred)
return loss
def bce_dice_loss(y_true, y_pred):
loss = losses.binary_crossentropy(y_true, y_pred) + dice_loss(y_true, y_pred)
return loss
我还尝试了不同的Splits和Keras Optimizer。它总是以〜0.4结尾。