我正试图理解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')
我希望有人得到一些提示,谢谢!
答案 0 :(得分:0)
首先,尝试通过在输出层中添加激活功能来对其进行修复:
model.add(Dense(n_steps_out, activation='linear'))
但是
在训练中得到nan通常意味着Exploding Gradient
。
在深度网络或递归神经网络中,误差梯度会 在更新过程中累积,并导致非常大的渐变。这些 反过来导致网络权重的大幅更新,反过来, 不稳定的网络。在极端情况下,权重的值可能变为 如此之大以至于溢出并导致NaN值。
检查this对机器学习的掌握程度。它将为您很好地概述问题所在,并提供一些潜在的解决方案。
答案 1 :(得分:0)
尽管LSTM广泛用于顺序数据表示,但在非深度学习分类器中,XGBoost取得了最佳结果