我正在尝试手动计算Keras模型的准确性和精确度。我查看了metrics.py函数,它具有以下代码来计算精度。
def precision(y_true, y_pred):
'''Calculates the precision, a metric for multi-label classification of
how many selected items are relevant.
'''
true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
predicted_positives = K.sum(K.round(K.clip(y_pred, 0, 1)))
precision = true_positives / (predicted_positives + K.epsilon())
return precision
我不明白的是为什么我们应该做y_true * y_pred以获得真实的肯定?我的y_pred是一个长度为7的矢量,它对我的图像中的每个像素都有概率,而我的y_true是一个经过热编码的legnth 7矢量。 谁能帮我理解y_true * y_pred在计算真实肯定时。
也使用上面的精度函数作为参考,我使用下面的自定义函数来提高精度。
def overall_acc(y_true, y_pred):
y_true_2D = K.max(y_true, axis=1, keepdims=False)
y_pred_2D = K.max(y_true*y_pred, axis=1, keepdims=False)
y_true_f = K.sum(K.flatten(y_true_2D))
y_pred_f = K.sum(K.flatten(y_pred_2D))
acc = y_pred_f / (y_true_f)
return acc
计算准确性是否正确?
任何帮助将不胜感激。