我正在熟悉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分钟内训练出大约40万个样本的1个历元。网络在一个新纪元后迅速收敛,对于我输入的任何一组点,都会得出相同的结果。在
我最近的改变是用以下方式重塑X:
^{pr2}$
培训似乎进展缓慢(我还没有尝试过完整的数据集),但速度明显较慢。在2800个样本的单历元中训练大约需要5分钟。我用了一小部分真实数据和少量的纪元,看起来很有前途。对于不同的输入,我没有得到相同的输出。在
有人能帮我了解这里发生了什么吗?在