为什么我会因为 Keras 的损失而得到 nan?

我正在关注文章https://www.analyticsvidhya.com/blog/2018/10/predicting-stock-price-machine-learningnd-deep-learning-techniques-python/。

首先,我尝试使用文章中的数据,即https://s3-ap-south-1.amazonaws.com/av-blog-media/wp-content/uploads/2019/03/NSE-TATAGLOBAL11。 CSV。该脚本产生与文章相同的结果。

然后,我尝试从 Yahoo Finance 下载另一个数据集。数据集更大(2805 行而不是文章样本数据集中的 1000+ 行)。但是,使用 LSTM 方法后,我会得到 nan 的损失。为什么?如何解决问题?


繁星coding
浏览 106回答 2
2回答

侃侃尔雅

您正在使用的数据很可能包含nan. 删除这些行或用适当的值填充这些行将解决此问题。您可以检查nan使用np.isnan(X)

回首忆惘然

请按照以下步骤进行:通过分位数归一化来归一化您的数据。严格来说,在训练数据上而不是在整个数据集上计算这种转换。添加正则化,可以通过增加 dropout 率或向权重添加 L1 和 L2 惩罚。L1 正则化类似于特征选择。如果这些仍然没有帮助,请减小网络的大小以减少导致训练数据较少的网络参数。这并不总是最好的主意,因为它会损害性能。最后,增加批量大小,它可能会增加优化的稳定性。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python