我试图理解为什么我分别使用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。
要提供更高的精度,我在model.predict
和model.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
强制转换是造成差异的原因吗?
您在考虑一个解释吗?
谢谢您的帮助。