为什么训练值不为0时,keras模型的验证F1度量,召回度量和精度度量为0.0000e + 00?

时间:2020-10-31 18:05:31

标签: tensorflow keras scikit-learn deep-learning multilabel-classification

在这里,我发布了详细的输出。可以看到验证F1和精度指标为0,而其他指标则不是。我想念什么? 我正在训练多标签分类器。 以下是有关指标的详细信息 这些是函数定义

click_action: 'https://www.website.com'

我正在使用Sigmoid作为输出层(无,13)激活功能。 请告诉我我在做什么错了?

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()))
 
METRICS = ['accuracy', f1_m, precision_m, recall_m, tf.keras.metrics.AUC(), 'mae']
model.compile(optimizer = 'adam', loss = 'binary_crossentropy',
                           metrics = METRICS)

0 个答案:

没有答案