【发布时间】:2018-02-10 13:08:05
【问题描述】:
我正在熟悉 LSTM,我需要澄清一些事情。我正在使用 t-300:t-1 对时间序列进行建模以预测 t:t+60。我的第一种方法是像这样设置 LSTM:
# fake dataset to put words into code:
X = [[1,2...299,300],[2,3,...300,301],...]
y = [[301,302...359,360],[302,303...360,361],...]
# LSTM requires (num_samples, timesteps, num_features)
X = X.reshape(X.shape[0],1,X.shape[1])
model = Sequential()
model.add(LSTM(n_neurons[0], batch_input_shape=(n_batch, X.shape[1], X.shape[2]), stateful=True))
model.add(Dense(y.shape[1]))
model.compile(loss='mse', optimizer='adam')
model.fit(X, y, epochs=1, batch_size=1, verbose=1, shuffle=False)
使用我的真实数据集,结果并不理想,在 CPU 上,它能够在 20 分钟内训练 1 个 epoch 约 400,000 个样本。网络在一个 epoch 后迅速收敛,对于我输入的任何一组点,都会得出相同的结果。
我最近的改变是用以下方式重塑 X:
X = X.reshape(X.shape[0],X.shape[1],1)
训练似乎变慢了(我没有尝试过完整的数据集),但速度明显变慢。训练一个包含 2,800 个样本的 epoch 大约需要 5 分钟。我玩弄了我真实数据的一小部分和更少的时期,这似乎很有希望。对于不同的输入,我没有得到相同的输出。
谁能帮我理解这里发生了什么?
【问题讨论】:
标签: python machine-learning time-series keras lstm