【问题标题】:What is the difference between Loss, accuracy, validation loss, Validation accuracy?Loss、accuracy、validation loss、Validation accuracy 有什么区别?
【发布时间】:2019-01-13 05:55:29
【问题描述】:

在每个时代结束时,我会得到例如以下输出:

Epoch 1/25
2018-08-06 14:54:12.555511: 
2/2 [==============================] - 86s 43s/step - loss: 6.0767 - acc: 0.0469 - val_loss: 4.1037 - val_acc: 0.2000
Epoch 2/25
2/2 [==============================] - 26s 13s/step - loss: 3.6901 - acc: 0.0938 - val_loss: 2.5610 - val_acc: 0.0000e+00
Epoch 3/25
2/2 [==============================] - 66s 33s/step - loss: 3.1491 - acc: 0.1406 - val_loss: 2.4793 - val_acc: 0.0500
Epoch 4/25
2/2 [==============================] - 44s 22s/step - loss: 3.0686 - acc: 0.0694 - val_loss: 2.3159 - val_acc: 0.0500
Epoch 5/25
2/2 [==============================] - 62s 31s/step - loss: 2.5884 - acc: 0.1094 - val_loss: 2.4601 - val_acc: 0.1500
Epoch 6/25
2/2 [==============================] - 41s 20s/step - loss: 2.7708 - acc: 0.1493 - val_loss: 2.2542 - val_acc: 0.4000
.
.
.
.

谁能解释一下loss、accuracy、validation loss和validation accuracy之间的区别?

【问题讨论】:

    标签: tensorflow keras


    【解决方案1】:

    当我们在拟合 DL 模型时提到 validation_split 作为拟合参数时,它会将每个 epoch 的数据分成两部分,即训练数据和验证数据。 它在训练数据上训练模型,并通过检查模型的损失和准确性来验证模型在验证数据上的有效性。

    通常随着每个 epoch 的增加,损失会降低,准确率会提高。但是使用 val_loss 和 val_acc,很多情况都是可能的:

    1. val_loss 开始增加,val_acc 开始减少(表示模型在填塞值而不是学习)

    2. val_loss 开始增加,val_acc 也增加。(在输出层使用 softmax 的情况下,可能是过度拟合或不同概率值的情况)

    3. val_loss 开始减少,val_acc 开始增加(正确,表示模型构建正在学习和工作正常)

    这也是一个参考链接,其中给出了更多描述。谢谢。 How to interpret "loss" and "accuracy" for a machine learning model

    我已经尝试在https://www.javacodemonk.com/difference-between-loss-accuracy-validation-loss-validation-accuracy-when-training-deep-learning-model-with-keras-ff358faa解释

    【讨论】:

    • 第四种可能性如何:val_loss 减少,但 val_METRIC 没有改善。这是我在实验中看到的。
    【解决方案2】:

    在你的 model.compile 函数中,你已经定义了一个损失函数和一个度量函数。

    您的“损失”是您的损失函数的值(未知,因为您没有显示您的代码) 您的“acc”是您的指标的价值(在这种情况下是准确性) val_* 仅表示该值对应于您的验证数据。

    只有损失函数用于更新模型的参数,准确率仅用于您了解模型的表现。

    您应该尽量减少损失并最大限度地提高准确性。 理想情况下,您的验证数据结果和训练数据结果之间的差异应该是相似的(尽管会有一些差异)

    【讨论】:

      【解决方案3】:

      我认为这是另一个值得通知的答案:

      val_loss 是交叉验证数据的成本函数值,loss 是训练数据的成本函数值

      https://datascience.stackexchange.com/a/25269

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-12-26
        • 2020-08-27
        • 2021-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-01
        相关资源
        最近更新 更多