2

我的输入时间序列数据是形状(nb_samples,75,32)。
75是时间步长,32是输入维度。Keras LSTM多维输入

model = Sequential() 
model.add(LSTM(4, input_shape=(75, 32))) 
model.summary() 

的LSTM权重向量,[W_i, W_c, W_f, W_o]都是32米的尺寸,但输出仅仅是一个单一的值。上述模型的输出形状是(1,4)。但是在LSTM中,输出也是一个向量,因此对于多对一的实现,不应该如此(32,4)?为什么它给多维度输入一个单一的价值呢?

+0

你是什么意思,这个向量有32个维度?这不是真的。 –

回答

1

正如可以在Keras doc for reccurent layers

对于形状(nb_sample, timestep, input_dim)的输入读取,有两种可能的输出:

  • 如果设置在LSTM return_sequence=True(这不是你的情况下),你返回每一个隐藏状态,所以当LSTM'读取'你的序列时,这是中间步骤。你会得到形状为(nb_sample, timestep, output_dim)的输出。

  • 如果你设置了return_sequence=False(这是默认值),它将只输出最后一个状态。所以你会得到形状为(nb_sample, output_dim)的输出。

所以,如果你定义LSTM层是这样的:

model.add(LSTM(4, return_sequence=True, input_shape=(75, 32))) 

,你将有形状(None, 75, 4)的输出。如果32是您的时间维度,则在将数据提供给LSTM之前,您必须转换数据。第一个维度是时间维度。

我希望这有助于:)