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