keras tensorflow 指标总是计算损失

keras tensorflow metric is loss always calculated

我遇到了这个 page。它定义 METRICS 如下。我的问题是

METRICS = [
          keras.metrics.TruePositives(name='tp'),
          keras.metrics.FalsePositives(name='fp'),
          keras.metrics.TrueNegatives(name='tn'),
          keras.metrics.FalseNegatives(name='fn'), 
          keras.metrics.BinaryAccuracy(name='accuracy'),
          keras.metrics.Precision(name='precision'),
          keras.metrics.Recall(name='recall'),
          keras.metrics.AUC(name='auc'),
    ]

Train on 182276 samples, validate on 45569 samples
    Epoch 1/100
    182276/182276 [==============================] - 2s 12us/sample - loss: 0.0139 - tp: 7.0000 - fp: 124.0000 - tn: 181835.0000 - fn: 310.0000 - accuracy: 0.9976 - precision: 0.0534 - recall: 0.0221 - auc: 0.7262 - val_loss: 0.0074 - val_tp: 4.0000 - val_fp: 0.0000e+00 - val_tn: 45492.0000 - val_fn: 73.0000 - val_accuracy: 0.9984 - val_precision: 1.0000 - val_recall: 0.0519 - val_auc: 0.8742
    Epoch 2/100
    182276/182276 [==============================] - 0s 3us/sample - loss: 0.0076 - tp: 91.0000 - fp: 30.0000 - tn: 181929.0000 - fn: 226.0000 - accuracy: 0.9986 - precision: 0.7521 - recall: 0.2871 - auc: 0.8828 - val_loss: 0.0053 - val_tp: 39.0000 - val_fp: 7.0000 - val_tn: 45485.0000 - val_fn: 38.0000 - val_accuracy: 0.9990 - val_precision: 0.8478 - val_recall: 0.5065 - val_auc: 0.8761
    Epoch 3/100
    182276/182276 [==============================] - 0s 3us/sample - loss: 0.0064 - tp: 146.0000 - fp: 36.0000 - tn: 181923.0000 - fn: 171.0000 - accuracy: 0.9989 - precision: 0.8022 - recall: 0.4606 - auc: 0.8981 - val_loss: 0.0049 - val_tp: 45.0000 - val_fp: 7.0000 - val_tn: 45485.0000 - val_fn: 32.0000 - val_accuracy: 0.9991 - val_precision: 0.8654 - val_recall: 0.5844 - val_auc: 0.8828
  1. 如果 loss 不是 METRICS 的一部分,为什么会在每个 epoch 之后显示。 loss 是默认选项吗?它也会出现在回归或多重 class class 化中吗?
  2. Keras 显示每个 METRICS 的训练和验证数据。是不是因为我们拟合模型的时候提供了验证数据validation_data=(val_features, val_labels)?如果我们不提供验证数据,是否会出现错误,因为它无法打印验证数据的指标?

1 - 这是默认值,除非你输入 verbose=0 然后什么都没有。是的,在所有情况下它都存在

2 - 是的,如果您不提供 validation_data 那么您将没有任何关于 val 指标的信息

1) 损失是神经网络的训练objective,因此无论回归或分类问题如何,您总是需要它。 它在 Keras 中默认显示。 Keras Loss Documentation

指标用于评估您的模型,因此您可以定义多个指标。 Keras Metrics Documentation

2) 如果您不提供验证数据,顾名思义,Keras 没有数据来验证您的模型,它会抛出错误。