Tensorflow 为什么keras模型的验证F1度量、召回度量和精度度量为0.0000e+;00,而训练值不为零?

Tensorflow 为什么keras模型的验证F1度量、召回度量和精度度量为0.0000e+;00,而训练值不为零?,tensorflow,keras,scikit-learn,deep-learning,multilabel-classification,Tensorflow,Keras,Scikit Learn,Deep Learning,Multilabel Classification,这里我发布了详细的输出。可以看到验证F1和精度度量为0,而其他度量则不是。我错过了什么? 我正在训练一个多标签分类器。 以下是有关指标的详细信息 这些是函数定义 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)))

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

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)
我使用Sigmoid作为输出层(无,13)激活函数。 请告诉我我做错了什么

Model: "sequential_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
mobilenet_1.00_128 (Model)   (None, 4, 4, 1024)        3228288   
_________________________________________________________________
global_average_pooling2d_1 ( (None, 1024)              0         
_________________________________________________________________
dropout_1 (Dropout)          (None, 1024)              0         
_________________________________________________________________
dense_3 (Dense)              (None, 13)                13325     
=================================================================
Total params: 3,241,613
Trainable params: 3,219,725
Non-trainable params: 21,888
_________________________________________________________________
Epoch 1/15
 99/100 [============================>.] - ETA: 5s - loss: 0.3829 - acc: 0.8527 - f1_m: 0.1378 - precision_m: 0.3697 - recall_m: 0.0945 - auc_1: 0.6922 - mean_absolute_error: 0.2099 WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.
100/100 [==============================] - 581s 6s/step - loss: 0.3828 - acc: 0.8527 - f1_m: 0.1378 - precision_m: 0.3693 - recall_m: 0.0944 - auc_1: 0.6926 - mean_absolute_error: 0.2100 - val_loss: 0.3785 - val_acc: 0.8689 - val_f1_m: 0.0000e+00 - val_precision_m: 0.0000e+00 - val_recall_m: 0.0000e+00 - val_auc_1: 0.7151 - val_mean_absolute_error: 0.2686
Epoch 2/15
 99/100 [============================>.] - ETA: 4s - loss: 0.3516 - acc: 0.8646 - f1_m: 0.1647 - precision_m: 0.4304 - recall_m: 0.1037 - auc_1: 0.7350 - mean_absolute_error: 0.2004WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.
100/100 [==============================] - 416s 4s/step - loss: 0.3516 - acc: 0.8646 - f1_m: 0.1643 - precision_m: 0.4292 - recall_m: 0.1034 - auc_1: 0.7348 - mean_absolute_error: 0.2004 - val_loss: 0.3598 - val_acc: 0.8689 - val_f1_m: 0.0000e+00 - val_precision_m: 0.0000e+00 - val_recall_m: 0.0000e+00 - val_auc_1: 0.7312 - val_mean_absolute_error: 0.1830
Epoch 3/15
 99/100 [============================>.] - ETA: 4s - loss: 0.3449 - acc: 0.8656 - f1_m: 0.1477 - precision_m: 0.4393 - recall_m: 0.0899 - auc_1: 0.7472 - mean_absolute_error: 0.1992WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.

Epoch 00003: ReduceLROnPlateau reducing learning rate to 0.00010000000474974513.
100/100 [==============================] - 446s 4s/step - loss: 0.3448 - acc: 0.8655 - f1_m: 0.1474 - precision_m: 0.4389 - recall_m: 0.0897 - auc_1: 0.7475 - mean_absolute_error: 0.1992 - val_loss: 0.3758 - val_acc: 0.8689 - val_f1_m: 0.0000e+00 - val_precision_m: 0.0000e+00 - val_recall_m: 0.0000e+00 - val_auc_1: 0.7276 - val_mean_absolute_error: 0.1720
and so on.................