Comment mettre en œuvre une profonde bidirectionnel LSTM avec Keras?

Je suis en train de mettre en œuvre un LSTM en fonction de reconnaissance vocale. Jusqu'à présent je pouvais bidirectionnelle LSTM (je pense que c'est bidirectionnelle LSTM) en suivant l'exemple de Fusion de la couche. Maintenant, je veux essayer avec un autre bidirectionnel LSTM couche, ce qui en fait un profond bidirectionnel LSTM. Mais je suis incapable de comprendre comment connecter la sortie de la fusion de deux couches dans une deuxième série de LSTM couches. Je ne sais pas si c'est possible avec Keras. J'espère que quelqu'un peut m'aider avec ce.

Code pour mon simple couche bidirectionnel LSTM est comme suit

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)

Dimensions de mes valeurs x et y sont comme suit.

(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))

OriginalL'auteur udani | 2016-02-03