convert specificity function for individual class

Viewed 29

The following code is for the overall speficity metric in Keras

 def specificity(y_true, y_pred):
   tn = K.sum(K.round(K.clip((1 - y_true) * (1 - y_pred), 0, 1)))
   fp = K.sum(K.round(K.clip((1 - y_true) * y_pred, 0, 1)))
   return tn / (tn + fp + K.epsilon())

How could this be converted to calculate a metric for an individual class, as in the given below code for Recall of individual class? Thanks

 def single_class_recall(interesting_class_id):
   def recall(y_true, y_pred):
     class_id_true = K.argmax(y_true, axis=-1)
     class_id_pred = K.argmax(y_pred, axis=-1)
     recall_mask = K.cast(K.equal(class_id_true, interesting_class_id), 'int32')
     class_recall_tensor = K.cast(K.equal(class_id_true, class_id_pred), 'int32') * 
 recall_mask
     class_recall = K.cast(K.sum(class_recall_tensor), 'float32') / 
 K.cast(K.maximum(K.sum(recall_mask), 1), 'float32')
    return class_recall
 recall.__name__ = 'recall_1_{}'.format(interesting_class_id)

 return recall
0 Answers
Related