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

Why I get nan for Keras loss?

我正在关注文章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 。该脚本产生与文章相同的结果。

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

按照以下步骤一步步进行:

  1. 通过分位数归一化来归一化您的数据,为了严格起见,请在训练数据而不是整个数据集上计算此转换。

  2. 添加正则化,方法是增加丢失率或向权重添加 L1 和 L2 惩罚。 L1正则化类似于特征选择。

  3. 如果这些仍然没有帮助,请减小网络的大小以减少导致训练数据较少的网络参数。这并不总是最好的主意,因为它会损害性能。

  4. 最后,增加批量大小,可能会增加优化的稳定性。

您正在使用的数据很可能会包含 nan。删除这些行或用适当的值填充这些行将解决此问题。

您可以使用 np.isnan(X)

检查 nan