【发布时间】:2020-10-03 23:05:25
【问题描述】:
我有一个 CNN 模型,可以识别总共 4 个姿势的人体姿势,我将通过计算召回率、精度、fmeasure、准确度等指标来测试我的模型的性能。精度是在 Keras 库中默认计算的,但另一个我需要实现它们。我找到了计算这些指标的源代码,但我认为这是用于二进制分类:
def precision(y_true, y_pred):
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
def recall(y_true, y_pred):
true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
possible_positives = K.sum(K.round(K.clip(y_true, 0, 1)))
recall = true_positives / (possible_positives + K.epsilon())
return recall
def f1(y_true, y_pred):
def recall(y_true, y_pred):
true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
possible_positives = K.sum(K.round(K.clip(y_true, 0, 1)))
recall = true_positives / (possible_positives + K.epsilon())
return recall
def precision(y_true, y_pred):
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
precision = precision(y_true, y_pred)
recall = recall(y_true, y_pred)
return 2*((precision*recall)/(precision+recall+K.epsilon()))
model.compile(loss='binary_crossentropy',
optimizer= "adam",
metrics=[mcor,recall, f1])
我认为这只是用于二进制分类,所以我需要你的帮助,如果我不能将它用于多标签分类,我可以使用什么方法?
【问题讨论】:
标签: python tensorflow machine-learning deep-learning computer-vision