Python 如何在Keras神经网络中获得训练和发展误差?

Python 如何在Keras神经网络中获得训练和发展误差?,python,machine-learning,keras,neural-network,evaluation,Python,Machine Learning,Keras,Neural Network,Evaluation,我应该如何获得这些值,以了解我的模型是过拟合还是欠拟合? 例如,当train_error=0.1和dev_error=0.25时,可以理解模型拟合过度。但是我不知道我的模型提供的结果中哪一个表明了提到的错误。 损耗值是表示该测量值还是(1-精度)测量值 这是我的模特训练结果的一部分: Epoch 152/250 100253/100253 [==============================] - 12s 118us/step - loss: 0.5306 - acc: 0.8568

我应该如何获得这些值,以了解我的模型是过拟合还是欠拟合? 例如,当
train_error=0.1
dev_error=0.25
时,可以理解模型拟合过度。但是我不知道我的模型提供的结果中哪一个表明了提到的错误。 损耗值是表示该测量值还是(1-精度)测量值

这是我的模特训练结果的一部分:

Epoch 152/250
100253/100253 [==============================] - 12s 118us/step - loss: 
0.5306 - acc: 0.8568 - val_loss: 1.1438 - val_acc: 0.7550
  • 错误和损失是同义词

  • Keras表示训练损失(分别为准确度)为
    loss
    acc
    );验证损失和准确性分别表示为
    val_损失
    val_acc

  • train_error=0.1
    dev_error=0.25
    ,或
    损耗:0.5306
    val_损耗:1.1438
    如下所示,表示过盈;这只是泛化差距,即训练集和验证集之间的预期差距。引用最近一篇文章:

    理解泛化的一个重要概念是泛化差距,即模型在训练数据上的性能与其在来自同一分布的不可见数据上的性能之间的差异

  • 过度拟合的信号是验证损失开始增加,而培训损失继续减少,即:

    请注意上图中曲线之间的间隙(双关语)


    根据上下文的不同,人们可能更愿意监控指标,而不是下面评论中正确指出的损失,但这是另一个讨论-希望您能在这里了解到这一点…

    我认为有必要指出,有时,根据您的应用程序,您可能希望实际使用指标(而不是损失)用于确定从何处开始过度装配。它们并不总是以同样的方式发展,在某些方面,度量比损失更重要。@DanielMöller Agree&Update-Response;我很高兴你这么说,因为我最近偶然发现了一位高级代表so受访者对ML问题的评论,声称(错误地,IMHO)这种方法是错误的…@desertnaut是的,我理解错误的概念。有这么大的损失值不是很正常吗?这些模棱两可的值让我开始怀疑我是否正确理解了错误的概念。@DanielMöller我想监控我的模型的精度和召回值,但我认为没有用于这些目的的内置方法。也许我必须实现一个自定义指标@raminkarimian,我们通常不能直观地理解交叉熵损失,这就是为什么我们使用准确度的原因,这看起来并不坏