我使用Keras的LSTM构建了一个模型,可以检测堆栈溢出上的两个问题是否重复。当我运行该模型时,我在历元中看到以下输出。
Epoch 23/200
727722/727722 [==============================] - 67s - loss: 0.3167 - acc: 0.8557 - val_loss: 0.3473 - val_acc: 0.8418
Epoch 24/200
727722/727722 [==============================] - 67s - loss: 0.3152 - acc: 0.8573 - val_loss: 0.3497 - val_acc: 0.8404
Epoch 25/200
727722/727722 [==============================] - 67s - loss: 0.3136 - acc: 0.8581 - val_loss: 0.3518 - val_acc: 0.8391
我正在努力理解每一个术语的含义。以上哪个值是我的模型的准确性。我对机器学习比较陌生,所以任何解释都会有所帮助。
在训练机器学习模型时,要避免的主要问题之一是过度拟合。这是指你的模型很好地拟合了训练数据,但它无法对以前从未见过的数据进行归纳和准确预测。
为了查明他们的模型是否过拟合,数据科学家使用了一种名为交叉验证的技术,他们将数据分为两部分——训练集和验证集。训练集用于训练模型,而验证集仅用于评估模型的性能。
训练集上的指标可以让你看到你的模型在训练方面的进展,但验证集上的标准可以让你衡量你的模型的质量——它能够根据以前从未见过的数据做出新的预测。
考虑到这一点,loss和acc是训练集上的损失和准确性的度量,而val_loss和val_acc是验证集上的损耗和准确性的测量。
目前,您的模型在训练集上的准确率约为86%,在验证集上的正确率约为84%。这意味着您可以期望您的模型在新数据上的准确率约为84%。
我注意到,当你的时代从23到25时,你的acc指标会增加,而val_acc指标会减少。这意味着你的模型更好地拟合了训练集,但正在失去对新数据的预测能力,这表明你的模型开始拟合噪声,并开始过度拟合。
因此,这是一个关于验证指标以及如何解释它们的快速解释。
RNN(LSTM(与CNN不同,因此可能有不同的原因。对于Keras的LSTM模型,我将修改两个LSTM参数;
- 单位:向下
- Stateful:false
通常,这些都是神经网络训练和验证数据集准确性差异的可能性。我从互联网收集答案
Sourosh
- 对训练集或验证集进行预处理(零意义、规范化等(,但不能同时对两者进行预处理
- 某些层的性能不同在从头开始的训练和推理过程中,您的模型可能会被错误地实现
- 过度装配
dk14
- 数据点不足,容量过大
- 订购
- 无/错误的特征缩放/规范化
- 学习率太高