Keras 中多元时间序列的 LSTM 变量输入

Variable input for LSTM for multivariate time series in Keras

使用 Keras,我想在一个大小为 N 的批次上训练一个 RNN(带有 LSTM 单元),每个时间步有 K 个时间步和一个大小为 L 的向量(解码器输出是一个大小为 L 的向量) .

遗憾的是,我很难让它适用于不同大小的时间步长,即不同的 K。

有2个问题与此相关:

  1. 每当我尝试使用 numpy 创建 3D 张量时,我得到的类型是:array(list(array())) 而不是类型:array(array(array())),因为我的第二维度不固定。生成的形状是 (N,) 而不是 (N, -1, L)

  2. 我发现填充是单变量时间序列的一种解决方案,但我为大小为 L 的每个时间步都有 L>>1 的向量。此外,(1) 中的形状不适合,即使我使用了:

    model.add(LSTM(50, input_shape=(N, None, L))) // None 对于不同的 K

或者是对每个批处理实例调用拟合方法 N 次的唯一解决方案?

你有什么想法,如何解决我的问题?

任何指点将不胜感激。

您必须将数据数组填充到最大时间步长度

from keras.preprocessing import sequence

data_array=sequence.pad_sequences(data_array,maxlen=max_K) 

也不要通过 input_shape

传递批量大小
model.add(LSTM(50, input_shape=(max_K, L)))