我的模型是否出现了欠拟合,TensorFlow?

我的损失值在最初几个epoch内是下降的,但随后开始上升,上升到某一点后停止变化。我认为现在它已经收敛了。那么,现在我们可以说我的模型出现了欠拟合吗?因为我的理解是(幻灯片93页 链接),如果我的损失值先下降然后上升,这意味着我设置的学习率过高,并且每2个epoch后我都在衰减学习率,所以在几个epoch后损失值停止上升,因为现在学习率已经很低了。由于我还在继续衰减学习率,根据幻灯片93页的解释,损失值应该会再次开始下降,因为学习率已经很低了,但实际上并没有。我们能说损失值不再进一步下降是因为我的模型出现了欠拟合吗?


回答:

总结来说,训练数据上的损失值表现如下:

  • 首先下降
  • 然后再次上升
  • 接着保持在同一水平
  • 然后学习率被衰减
  • 但损失值并没有再次下降(在学习率衰减后仍然保持不变)

对我来说,这听起来像是最初的学习率设置得过高,导致模型随后陷入了一个局部最小值。在模型已经陷入局部最小值后再去衰减学习率,并不会帮助模型逃离这个最小值。将初始学习率设置得更低可能会更有益,这样可以避免一开始就陷入“坏”的局部最小值。

你的模型现在可能确实出现了欠拟合,使模型更加复杂(例如增加隐藏层的节点数)可能会有所帮助。不过,这也不一定是事实。

你使用了什么技术来避免过拟合吗?例如,正则化和/或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中创建了一个多类分类项目。该项目可以对…

发表回复

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