我的大多数代码都基于this文章,而我要问的问题在那儿很明显,但在我自己的测试中也很明显。它是具有LSTM层的顺序模型。
这是一个模型的真实数据的绘制预测,该模型使用一个时期用大约20个小数据集进行训练。
这是另一幅图,但是这次使用了一个训练有更多数据的模型,历时10个纪元。
是什么原因造成的,我该如何解决?同样,我发送的第一个链接在底部显示了相同的结果-1个时期确实很棒,而3500个时期太糟糕了。
此外,当我进行一次训练以获取更高的数据数量但只有一个时期时,我得到的结果与第二个图相同。
什么可能导致此问题?
答案 0 :(得分:3)
几个问题:
确实,早期图表似乎很有趣,但请仔细看一下:
我清楚地看到了巨大的预测谷,其中预期数据应该是峰值
这真的好吗?听起来像是完全异相的随机波,这意味着直线确实比这更好。
看看“训练损失”,这肯定可以告诉您您的模型是否更好。
如果是这种情况,而您的模型未达到所需的输出,则您可能应该制作一个功能更强大的模型(更多的层,更多的单元,不同的方法等)。但是请注意,无论模型多么出色,许多数据集都是太随机而无法学习。
如果您实际上遭受了更好的训练损失。好的,所以您的模型确实在变好。
如果您的“验证”损失越来越严重,则说明您的模型过拟合。它是在记忆训练数据,而不是一般地学习。您需要功能较弱的模型,或大量的“辍学”模型。
通常,在最佳点上,验证损失停止下降,而训练损失则继续下降。如果您过度健身,这是停止训练的关键。在keras文档中了解EarlyStopping
回调。
如果培训损失在增加,那么您就会遇到一个真正的问题,要么是错误,要么是使用自定义图层的地方计算准备不充分,或者仅仅是学习率过高。
降低学习率(将其除以10或100),创建并编译“新”模型,然后重新开始训练。
然后,您需要适当地详细说明问题。