[英]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.