Я пытаюсь понять, почему я получаю разные метрики, используя model.evaluate
против model.predict
, а затем model.metrics
.
Я работаю над сегментарной сегментацией.
У меня есть оценочный набор из 24 изображений.
У меня есть пользовательские показатели DICE INDEX:
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)
result =(2 * intersection) / (K.sum(y_true_f) + K.sum(y_pred_f))
return result
Когда я использую model.evaluate
, я получаю оценку в 0,9093835949897766.
Когда я использую model.predict
, а затем model.metrics
, я получаю оценку в 0,9092264051238695.
Чтобы повысить точность: я установил размер партии 24 в model.predict
, а также в model.evaluate
, чтобы убедиться, что проблема не связана с размером партии. Я не знаю, что происходит, когда размер партии больше (например, 32), чем количество выборок в наборе оценки…
Наконец, чтобы вычислить метрики после model.prediction
, я запускаю:
dice_result = 0
for y_i in range(len(y)):
dice_result += tf.Session().run(tf.cast(dice_coef(y[y_i], preds[y_i]),
tf.float64))
tf.Session().close
dice_result /= (len(y))
Я думал, что причиной разницы является кастинг tf.float64
?
Вы думаете об объяснении?
Спасибо за вашу помощь.