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

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


回答:

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

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

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

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

你使用了什么技术来避免过拟合吗?例如,正则化和/或dropout?如果使用了这些技术,那么在损失值下降之前(当损失值再次上升之前),你的模型可能最初是过拟合的。为了更好地了解发生了什么,除了绘制训练数据上的损失值之外,还应该绘制验证集上的损失值。如果训练数据上的损失值显著低于验证数据上的损失值,那么你就知道这是过拟合了。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

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