为什么我会因为 Keras 损失而得到 nan?
Why I get nan for Keras loss?
首先,我尝试使用文章中的数据,即 https://s3-ap-south-1.amazonaws.com/av-blog-media/wp-content/uploads/2019/03/NSE-TATAGLOBAL11.csv 。该脚本产生与文章相同的结果。
然后,我尝试从雅虎财经下载另一个数据集。数据集更大(2805 行而不是文章示例数据集中的 1000 多行)。但是,在使用 LSTM 方法后,我会得到 nan 的损失。为什么?如何解决问题?
按照以下步骤一步步进行:
通过分位数归一化来归一化您的数据,为了严格起见,请在训练数据而不是整个数据集上计算此转换。
添加正则化,方法是增加丢失率或向权重添加 L1 和 L2 惩罚。 L1正则化类似于特征选择。
如果这些仍然没有帮助,请减小网络的大小以减少导致训练数据较少的网络参数。这并不总是最好的主意,因为它会损害性能。
最后,增加批量大小,可能会增加优化的稳定性。
您正在使用的数据很可能会包含 nan
。删除这些行或用适当的值填充这些行将解决此问题。
您可以使用 np.isnan(X)
检查 nan
首先,我尝试使用文章中的数据,即 https://s3-ap-south-1.amazonaws.com/av-blog-media/wp-content/uploads/2019/03/NSE-TATAGLOBAL11.csv 。该脚本产生与文章相同的结果。
然后,我尝试从雅虎财经下载另一个数据集。数据集更大(2805 行而不是文章示例数据集中的 1000 多行)。但是,在使用 LSTM 方法后,我会得到 nan 的损失。为什么?如何解决问题?
按照以下步骤一步步进行:
通过分位数归一化来归一化您的数据,为了严格起见,请在训练数据而不是整个数据集上计算此转换。
添加正则化,方法是增加丢失率或向权重添加 L1 和 L2 惩罚。 L1正则化类似于特征选择。
如果这些仍然没有帮助,请减小网络的大小以减少导致训练数据较少的网络参数。这并不总是最好的主意,因为它会损害性能。
最后,增加批量大小,可能会增加优化的稳定性。
您正在使用的数据很可能会包含 nan
。删除这些行或用适当的值填充这些行将解决此问题。
您可以使用 np.isnan(X)
nan