使用Keras,我想训练一个大小为N的批次的RNN(带有LSTM单元),每个时间步长为K个时间步长和一个大小为L的向量(解码器输出是一个大小为L的向量)。 / p>
可悲的是,我在使其适用于不同尺寸的时间步长时遇到麻烦,即不同的K.
有两个与此相关的问题:
每当我尝试用numpy创建一个3D张量时,我得到类型:array(list(array()))而不是type:array(array(array())),因为我的第二个维度是不固定。然后得到的形状是(N,)而不是(N,-1,L)
我发现填充是单变量时间序列的一种解决方案,但我有L>>1
的每个时间步长为L的矢量。另外,(1)的形状不适合,即使我使用过:
model.add(LSTM(50,input_shape =(N,None,L)))//对于不同的K没有
或者是每个批处理实例调用fit-method N次的唯一解决方案?
你有什么想法,如何解决我的问题?
任何指针都将受到赞赏。
答案 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)))