KerasでステートフルなLSTMを作成しようとしていますが、LSTMを実行する前に埋め込みレイヤーを追加する方法がわかりません。問題はstateful
フラグのようです。私のネットがステートフルでない場合、埋め込みレイヤーを追加することはかなり単純明快であり、機能します。層を埋め込むことなく埋め込みレイヤーを持つステートフルLSTM(シェイプは一致しません)
作業ステートフル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(...)
I、即ち第1層のみが形状を知らする必要が埋め込み層にbatch_input_shape
パラメータを移動する埋め込み層を追加する場合?
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に単語埋め込みを組み合わせる方法は何ですか? time_steps細胞とBATCH_SIZEのアンロールLSTM /番号の長さバッチの例の数である
embedding_sizeを決定するか、埋め込みベクトルのサイズを調べるにはどうすればよいですか? – naisanza
@naisanza embedding_sizeはハイパーパラメータです。これはembedding_sizeがあなたの問題に依存し、自由に選択できることを意味します。 残念ながら、良いハイパーパラメータを選択する方法に関する一般的な回答は得られませんが、https://arxiv.org/pdf/1206.5533.pdfはそのトピックの良いスタートです。 – bruThaler