用于Keras中多变量时间序列的LSTM的可变输入

时间:2018-03-22 07:38:38

标签: variables input keras lstm rnn

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

可悲的是,我在使其适用于不同尺寸的时间步长时遇到麻烦,即不同的K.

有两个与此相关的问题:

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

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

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

  3. 或者是每个批处理实例调用fit-method N次的唯一解决方案?

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

    任何指针都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

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

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)))