具有嵌入层的有状态LSTM(形状不匹配)

时间:2016-11-19 16:50:22

标签: keras lstm keras-layer

我正在尝试使用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(...)

添加嵌入层时,我将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的技巧是什么?

0 个答案:

没有答案