【问题标题】:For Keras LSTM, what is the difference in passing in lag features vs timesteps of features?对于 Keras LSTM,传递滞后特征与特征时间步长有什么区别?
【发布时间】: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


    【解决方案1】:

    在 Keras 中,(num_samples, timesteps, num_features) 中的时间步长决定了BPTT 会将错误传播回去的步数。

    反过来,这需要更多时间来完成,因此您观察到的减速。

    X.reshape(X.shape[0], X.shape[1], 1) 在您的情况下是正确的做法,因为您拥有的是一个具有 300 个时间步长的单一功能。

    【讨论】:

    • 我的数据集尺寸为 (82 x 15 x 2)。我的输入窗口大小为 15,输出窗口大小为 12。我正在移动输入,延迟为 1。你能解释一下在这种情况下是什么(num_samples、timesteps、num_features)吗?
    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 2011-06-03
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 2020-04-11
    相关资源
    最近更新 更多