簡體   English   中英

Keras LSTM 的第二層(但不是第一層)中的輸入形狀錯誤

[英]Input Shape Error in Second-layer (but not first) of Keras LSTM

我正在嘗試構建一個 LSTM 模型,在https://keras.io/layers/recurrent/ 處理文檔示例

from keras.models import Sequential
from keras.layers import LSTM

以下三行代碼(加上注釋)直接取自上面的文檔鏈接:

model = Sequential()
model.add(LSTM(32, input_dim=64, input_length=10))

# for subsequent layers, not need to specify the input size:
model.add(LSTM(16))

ValueError:輸入 0 與層 lstm_2 不兼容:預期 ndim=3,發現 ndim=2

在執行第二個 model.add() 語句后,但在將模型暴露給我的數據之前,甚至編譯它之前,我得到了上面的錯誤。

我在這里做錯了什么? 我正在使用 Keras 1.2.1。

編輯

剛剛升級到當前的 1.2.2,仍然有同樣的問題。

感謝 patyork 在Github上回答這個問題:

第二個 LSTM 層沒有得到它期望的 3D 輸入(形狀為(batch_size、timesteps、features)。這是因為第一個 LSTM 層具有(默認值)return_sequences=False,這意味着它只輸出t-1 時刻的最后一個特征集,其形狀為 (batch_size, 32),或不包括時間的 2 個維度。

因此,要提供如何使用堆疊 LSTM 實現多對一(return_sequences=False)序列分類的代碼示例,只需確保在中間層使用 return_sequences=True ,如下所示:

model = Sequential()
model.add(LSTM(32, input_dim=64, input_length=10, return_sequences=True))
model.add(LSTM(24, return_sequences=True))
model.add(LSTM(16, return_sequences=True))
model.add(LSTM(1,  return_sequences=False))

model.compile(optimizer = 'RMSprop', loss = 'categorical_crossentropy')

(沒有錯誤)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM