为什么在Keras中在model.evaluate vs model.predict然后是model.metrics之后获得不同的度量?

时间:2019-04-29 08:50:10

标签: python tensorflow keras deep-learning

我试图理解为什么我分别使用model.evaluatemodel.predictmodel.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。

要提供更高的精度,我在model.predictmodel.evaluate中都设置了24的批量大小,以确保问题不是由批量大小引起的。我不知道当批次大小(例如: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强制转换是造成差异的原因吗?

您在考虑一个解释吗?

谢谢您的帮助。

0 个答案:

没有答案