Keras LSTM问题,如何为时间序列正确设置神经网络?

时间:2019-05-23 12:22:08

标签: python keras time-series lstm recurrent-neural-network

我正试图理解lstm如何与Keras一起预测时间序列。 这是我的例子。 我使用加速度计,并且具有128.000的时间序列。我以为: n_steps_in = 10.000 n_steps_out = 5.000进行预测。

我将大序列分为114个样本,10,000个时间序列和1个特征 X = [114,10.000,1] y = [114,5.000]

我试图了解要使用多少个隐藏层,多少个神经元。 我想使用

作为回归
activation=ReLU, 
loss = mse
optimizer=adam

问题是很多次我的损失等于nan,我不明白为什么。

这是我的代码示例

model1 = Sequential()
model1.add(LSTM(200, activation='relu', input_shape=(n_steps_in, n_features)))
model1.add(Dense(n_steps_out))
model1.compile(optimizer='adam', loss='mse')

我希望有人得到一些提示,谢谢!

2 个答案:

答案 0 :(得分:0)

首先,尝试通过在输出层中添加激活功能来对其进行修复:

model.add(Dense(n_steps_out, activation='linear'))

但是

在训练中得到nan通常意味着Exploding Gradient

  

在深度网络或递归神经网络中,误差梯度会   在更新过程中累积,并导致非常大的渐变。这些   反过来导致网络权重的大幅更新,反过来,   不稳定的网络。在极端情况下,权重的值可能变为   如此之大以至于溢出并导致NaN值。

检查this对机器学习的掌握程度。它将为您很好地概述问题所在,并提供一些潜在的解决方案。

答案 1 :(得分:0)

尽管LSTM广泛用于顺序数据表示,但在非深度学习分类器中,XGBoost取得了最佳结果