from keras import backend as K 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): """Compute recall metric""" 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))) return true_positives / (possible_positives + K.epsilon()) def f1_score(y_true, y_pred): """Compute f1-score metric""" _precision = precision(y_true, y_pred) _recall = recall(y_true, y_pred) f1_score = 2 * ((_precision * _recall) / (_precision + _recall + K.epsilon())) return f1_score