精度和召回率很差,f1_scor,欠条,即使预测非常好

时间:2019-06-26 05:47:20

标签: deep-learning

我正在执行分割任务以从航拍图像中提取道路,我遵循此链接中的代码segmentation,并且得到了很好的预测true_labelprediction,训练准确性训练集大约占98%,但是当我尝试根据此metrics_v2.py 使用更多指标来评估预测时,我也添加了此代码

def recall_m(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_m(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 f1_m(y_true, y_pred):
    precision = precision_m(y_true, y_pred)
    recall = recall_m(y_true, y_pred)
    return 2*((precision*recall)/(precision+recall+K.epsilon()))


def f1_loss(y_true, y_pred):

   tp = K.sum(K.cast(y_true*y_pred, 'float'), axis=0)
   tn = K.sum(K.cast((1-y_true)*(1-y_pred), 'float'), axis=0)
   fp = K.sum(K.cast((1-y_true)*y_pred, 'float'), axis=0)
   fn = K.sum(K.cast(y_true*(1-y_pred), 'float'), axis=0)

   p = tp / (tp + fp + K.epsilon())
   r = tp / (tp + fn + K.epsilon())

   f1 = 2*p*r / (p+r+K.epsilon())
   f1 = tf.where(tf.is_nan(f1), tf.zeros_like(f1), f1)
   return 1 - K.mean(f1)

我什至尝试将这些指标分开,但仍然得到相同的不良结果,例如precision and recall 我不知道我的错误在哪里,任何建议将不胜感激

0 个答案:

没有答案