1. ホーム
  2. tensorflow

[解決済み] kerasで複数のlstmを積み重ねるには?

2023-05-29 12:08:27

質問

深層学習ライブラリkerasを使用しており、複数のLSTMをスタックしようとしていますが、うまくいきません。 以下は私のコードです。

model = Sequential()
model.add(LSTM(100,input_shape =(time_steps,vector_size)))
model.add(LSTM(100))

上記のコードは、3行目でエラーを返します。 Exception: Input 0 is incompatible with layer lstm_28: expected ndim=3, found ndim=2

入力Xは形状(100,250,50)のテンソルです。kerasをtensorflowのバックエンドで動かしている

どのように解決するのか?

この場合 return_sequences=True を追加し、その出力テンソルが ndim=3 (すなわち、バッチサイズ、タイムステップ、隠された状態)になるようにします。

以下の例をご覧ください。

# expected input data shape: (batch_size, timesteps, data_dim)
model = Sequential()
model.add(LSTM(32, return_sequences=True,
               input_shape=(timesteps, data_dim)))  # returns a sequence of vectors of dimension 32
model.add(LSTM(32, return_sequences=True))  # returns a sequence of vectors of dimension 32
model.add(LSTM(32))  # return a single vector of dimension 32
model.add(Dense(10, activation='softmax'))

から https://keras.io/getting-started/sequential-model-guide/ ("stacked lstm"で検索してください)