【问题标题】:keras tensorflow metric is loss always calculatedkeras tensorflow metric 总是计算损失
【发布时间】:2020-01-30 15:23:57
【问题描述】:

我遇到了这个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 是默认选项吗?它是否也适用于回归或多类分类?
  2. Keras 显示每个 METRICS 用于训练和验证数据。是因为当我们拟合模型时,我们提供了验证数据validation_data=(val_features, val_labels)?如果我们不提供验证数据,会因为无法打印验证数据的指标而报错吗?

【问题讨论】:

    标签: tensorflow keras loss


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 如果您不提供验证数据,那么它就不会对您的数据运行验证,也不会报错
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      • 2016-05-21
      • 1970-01-01
      • 2018-04-13
      • 2020-04-27
      • 1970-01-01
      • 2018-09-10
      相关资源
      最近更新 更多