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
Vous devez vous connecter pour publier un commentaire.
Bien, j'ai eu la réponse pour la question affichée sur le Keras questions. Espérons que cela serait utile à tous ceux qui recherchent ce type d'approche.
Comment mettre en œuvre de profondes bidirectionnel -LSTM
OriginalL'auteur udani
Vous pouvez utiliser
keras.layers.wrappers.Bidirectional
.Manuel officiel peut être référencé ici, https://keras.io/layers/wrappers/#bidirectional
OriginalL'auteur Tom
Maintenant la conception de BiLSTM est plus facile. Une nouvelle classe
Bidirectional
est ajouté comme par officiel doc ici: https://www.tensorflow.org/api_docs/python/tf/keras/layers/BidirectionalPour la formation suite & code complet
OriginalL'auteur Partha Sen
Keras exemple
OriginalL'auteur rosefun