Car*_*n P 0 python machine-learning lstm keras tensorflow
我的大部分代码都是基于这篇文章,我所问的问题在那里很明显,而且在我自己的测试中也是如此。它是一个具有 LSTM 层的顺序模型。
下面是对来自模型的真实数据的预测,该模型是使用一个时期的大约 20 个小数据集进行训练的。
这是另一个图,但这次模型使用更多数据训练了 10 个时期。
造成这种情况的原因是什么以及如何解决?另外,我发送的第一个链接在底部显示了相同的结果 - 1 epoch 效果很好,而 3500 epoch 则很糟糕。
此外,当我针对更高的数据计数但只有 1 个时期运行训练课程时,我得到了与第二个图相同的结果。
什么可能导致此问题?
几个问题:
早期的图表确实看起来很有趣,但仔细看看它:
我清楚地看到巨大的预测山谷,其中预期数据应该是峰值
这真的更好吗?这听起来像是完全异相的随机波,这意味着直线确实代表比这更好的损失。
看一下“训练损失”,这肯定可以告诉你你的模型是否更好。
如果是这种情况,并且您的模型没有达到所需的输出,那么您可能应该制作一个功能更强大的模型(更多层、更多单元、不同的方法等)。但请注意,无论模型有多好,许多数据集都太随机而无法学习。
万一你实际上有更好的训练损失。好的,所以你的模型确实变得更好了。
如果你的“验证”损失越来越严重,那么你的模型就过度拟合了。它是记住训练数据而不是一般性地学习。你需要一个能力较差的模型,或者大量的“dropout”。
通常,存在一个最佳点,验证损失停止下降,而训练损失持续下降。如果你过度拟合,这就是停止训练的关键点。阅读有关EarlyStoppingkeras 文档中有关回调的信息。
如果你的训练损失正在上升,那么你就遇到了真正的问题,要么是错误,要么是在使用自定义层时某个地方的计算准备不足,或者只是学习率太大。
降低学习率(除以 10 或 100),创建并编译“新”模型并重新启动训练。
然后你需要正确地详细说明你的问题。