Keras 中多元时间序列的 LSTM 变量输入
Variable input for LSTM for multivariate time series in Keras
使用 Keras,我想在一个大小为 N 的批次上训练一个 RNN(带有 LSTM 单元),每个时间步有 K 个时间步和一个大小为 L 的向量(解码器输出是一个大小为 L 的向量) .
遗憾的是,我很难让它适用于不同大小的时间步长,即不同的 K。
有2个问题与此相关:
每当我尝试使用 numpy 创建 3D 张量时,我得到的类型是:array(list(array())) 而不是类型:array(array(array())),因为我的第二维度不固定。生成的形状是 (N,) 而不是 (N, -1, L)
我发现填充是单变量时间序列的一种解决方案,但我为大小为 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)))
使用 Keras,我想在一个大小为 N 的批次上训练一个 RNN(带有 LSTM 单元),每个时间步有 K 个时间步和一个大小为 L 的向量(解码器输出是一个大小为 L 的向量) .
遗憾的是,我很难让它适用于不同大小的时间步长,即不同的 K。
有2个问题与此相关:
每当我尝试使用 numpy 创建 3D 张量时,我得到的类型是:array(list(array())) 而不是类型:array(array(array())),因为我的第二维度不固定。生成的形状是 (N,) 而不是 (N, -1, L)
我发现填充是单变量时间序列的一种解决方案,但我为大小为 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)))