Я тренируюсь в сети с функцией потери потери костей и метрикой c коэффициента костей. Ниже вы можете найти функцию, которую я использую для расчета потери кости:
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. Как это возможно?
Последний уровень сети - сигмоидальная функция для двоичной сегментации.
Я загружаю валидационные и обучающие графики. Из графиков также видно, что точность проверки увеличивается, однако потери при проверке колеблются.