损失,准确性,验证损失,验证准确性之间有什么区别?

时间:2018-08-06 09:47:30

标签: tensorflow keras

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

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
.
.
.
.

有人可以解释我,损失,准确性,验证损失和验证准确性之间有什么区别吗?

3 个答案:

答案 0 :(得分:6)

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

通常,随着每个时期的增加,损耗会降低,而精度会更高。但是使用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

答案 1 :(得分:1)

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

  

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

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

答案 2 :(得分:0)

在model.compile函数中,您定义了损失函数和指标函数。

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

仅损失函数用于更新模型的参数,准确性仅用于查看模型的运行状况。

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