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之前,您必須轉換數據。第一個維度是時間維度。

我希望這有助於:)