Почему мы используем переменную smooth для вычисления dice_coef или IoU в модели keras? - PullRequest
2 голосов
/ 04 августа 2020

Я хочу рассчитать функцию потерь моей модели keras на основе dice_coef, и я нашел это выражение на inte rnet:

smooth = 1.

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 + smooth) / (K.sum(y_true_f) + K.sum(y_pred_f) + smooth)

Я не могу понять, почему мы интегрируем эту плавную переменную на числитель и знаменатель бота?

1 Ответ

1 голос
/ 04 августа 2020

Обычно вы используете smooth, чтобы избежать деления на 0.

Если по какой-то причине и gt, и pred равны 0, у вас будет Inf и распространение веса нарушит процедуру обучения.

Обратите внимание, что вы добавляете его как к числителю, так и к знаменателю, чтобы предотвратить его влияние на коэффициент в любом другом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...