我无法理解将多变量时间序列输入到LSTM的正确方法是什么。
假设我有一个随时间变化的3个特征的数据集,像这样:
特征1 | 特征2 | 特征3 |
---|---|---|
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
我应该像这样使用numpy.vstack()将数据直接输入到LSTM中吗?
[[1,2,3], [4,5,6], [7,8,9]]
还是应该按列堆叠数据,使每行成为特征序列,使用numpy.column_stack(),像这样:
[[1,4,7], [2,5,8], [3,6,9]]
回答:
根据Keras LSTM的API:
输入:一个形状为[batch, timesteps, feature]的3D张量。
因此,特征(多个变量)应该由最后一个维度表示,这意味着您的第一个建议是正确的。
注意:如果您不是为整个数据集使用fit
函数,那么batch
维度才需要考虑。否则,如果您是在推断时呈现单个示例,您还应该在第0轴上应用numpy.expand_dims
函数。