如何使用Keras实现深度双向LSTM?

21
我正试图实现一个基于LSTM的语音识别器。到目前为止,我已经通过参照合并层中的示例,设置了双向LSTM(我认为它是作为双向LSTM工作的)。现在我想尝试使用另一种双向LSTM层,使其成为深度双向LSTM。但我无法弄清楚如何将先前合并的两个层的输出连接到第二组LSTM层中。我不知道是否可以在Keras中实现。希望有人能帮助我解决这个问题。
我的单层双向LSTM代码如下:
left = Sequential()
left.add(LSTM(output_dim=hidden_units, init='uniform', inner_init='uniform',
               forget_bias_init='one', return_sequences=True, activation='tanh',
               inner_activation='sigmoid', input_shape=(99, 13)))
right = Sequential()
right.add(LSTM(output_dim=hidden_units, init='uniform', inner_init='uniform',
               forget_bias_init='one', return_sequences=True, activation='tanh',
               inner_activation='sigmoid', input_shape=(99, 13), go_backwards=True))

model = Sequential()
model.add(Merge([left, right], mode='sum'))

model.add(TimeDistributedDense(nb_classes))
model.add(Activation('softmax'))

sgd = SGD(lr=0.1, decay=1e-5, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd)
print("Train...")
model.fit([X_train, X_train], Y_train, batch_size=1, nb_epoch=nb_epoches, validation_data=([X_test, X_test], Y_test), verbose=1, show_accuracy=True)

我的x和y值的维度如下。

(100, 'train sequences')
(20, 'test sequences')
('X_train shape:', (100, 99, 13))
('X_test shape:', (20, 99, 13))
('y_train shape:', (100, 99, 11))
('y_test shape:', (20, 99, 11))
4个回答

22

好的,我得到了在Keras问题中发布的问题的答案。希望这对于寻找此类方法的任何人都有用。

如何实现深度双向-LSTM

8

5

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接