Keras でステートフル LSTM を構築しようとしていますが、LSTM を実行する前に埋め込みレイヤーを追加する方法がわかりません。問題はstateful
フラグのようです。私のネットがステートフルでない場合、埋め込みレイヤーを追加するのは非常に簡単で機能します。
レイヤーを埋め込まずに動作するステートフル LSTM は、現時点では次のようになります。
model = Sequential()
model.add(LSTM(EMBEDDING_DIM,
batch_input_shape=(batchSize, longest_sequence, 1),
return_sequences=True,
stateful=True))
model.add(TimeDistributed(Dense(maximal_value)))
model.add(Activation('softmax'))
model.compile(...)
Embedding レイヤーを追加するとき、batch_input_shape
パラメーターを Embedding レイヤーに移動します。つまり、形状を知る必要があるのは最初のレイヤーだけですか? このような:
model = Sequential()
model.add(Embedding(vocabSize+1, EMBEDDING_DIM,batch_input_shape=(batchSize, longest_sequence, 1),))
model.add(LSTM(EMBEDDING_DIM,
return_sequences=True,
stateful=True))
model.add(TimeDistributed(Dense(maximal_value)))
model.add(Activation('softmax'))
model.compile(...)
私が知っている例外はException: Input 0 is incompatible with layer lstm_1: expected ndim=3, found ndim=4
だから私は今ここで立ち往生しています。単語の埋め込みをステートフル LSTM に結合するトリックは何ですか?