Tuesday, May 2, 2017

Keras 2.0: Precision, recall

import keras.backend as K


def f1_score(y_true, y_pred):

    # Count positive samples.
    #c1 = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
    #c2 = K.sum(K.round(K.clip(y_pred, 0, 1)))
    #c3 = K.sum(K.round(K.clip(y_true, 0, 1)))
    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)))
   possible_positives = K.sum(K.round(K.clip(y_true, 0, 1)))
    p = true_positives / (predicted_positives + K.epsilon())
r = true_positives / (possible_positives + K.epsilon()) beta = 1 # fmeasure bb = beta**2 fbeta_score = (1 + bb) * (p * r) / (bb * p + r + K.epsilon())
      return fbeta_score 

model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy', f1_score])

No comments:

Post a Comment