我正在尝试为时间序列在keras中开发一个Encoder模型。数据的形状为(5039,28,1),这意味着我的seq_len为28,并且我有一个特征。当我为我的LSTM层设置隐藏单位数时,如果它小于seq_len,例如n_hunits = 14,则没有问题。但是我需要将其设置为较大的值,例如n_hunits = 112,这将导致“整形”步骤出错。那么,我怎样才能使Lstm层的大小大于seq_len?
inp = Input(shape=(seq_len, n_features))
out, c, h = LSTM(n_hunits, name='outputEncoder', return_state=True)(inp)
model = Model(inp, out)
if seq_len > n_hunits:
repeat = seq_len / n_hunits
else:
repeat = n_hunits / seq_len
context = RepeatVector(repeat)(out)
context_reshaped = Reshape((seq_len, n_features))(context)
context_reshaped必须为(None,28,1)形状,因为稍后我的解码器将以该形状传递数据,并且它们需要兼容。这就是为什么我在这里尝试使用Reshape的原因。