寻求关于我的损失/准确率与轮次曲线的宝贵建议

我的Keras-Tensorflow模型表现如下的图片所示。我可以看到训练和验证损失表现良好,但训练和验证准确率却相当异常。我认为验证数据集可能比训练集容易得多。因此我得到了较高的验证准确率。我期待您的宝贵建议。

curve


回答:

您展示的图表从训练期间的指标和损失的角度来看是正常的。

使用批量训练时,出现小幅波动是很常见的。此外,当您看到损失中的这些波动(损失增加)时,准确率也会随之下降。

因此,图表本身没有什么可担心的。

然而,您关于验证准确率的观察确实是有道理的:大多数情况下,这是因为验证数据集比较容易。

解决这个问题的办法之一是使用交叉验证,看看这种现象是否仍然存在。

交叉验证是一种模型验证技术,在每次迭代/折叠中,数据集的不同部分被保留用于训练和验证。下图总结了我刚刚所说的内容。

展示交叉验证技术;请注意,正确的命名是验证集,而不是测试集

这种现象发生的另一个原因是使用了称为Dropout的正则化技术。如您所知,在训练阶段,某个层应用Dropout意味着随机关闭/停用一定百分比的神经元。这反过来会惩罚训练集上的表现,但同时也会降低过拟合的风险。因此,许多时候在训练中使用Dropout时,可能会出现验证准确率更高的情况,因为在验证时的预测中Dropout并未启用。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注