2016-02-03 17 views
8

私は、LSTMベースの音声認識装置を実装しようとしています。これまでのところ、Mergeレイヤーの例に従って、双方向LSTMを設定することができました(私は双方向LSTMとして動作していると思います)。今私は深い双方向LSTMにする別の双方向LSTM層でそれを試してみたい。しかし、以前にマージされた2つのレイヤの出力を、LSTMレイヤの第2のセットにどのように接続するかを理解することはできません。 Kerasで可能かどうかはわかりません。誰かが私にこれを助けることを願っています。次のようにKerasで深い双方向LSTMを実装するにはどうすればいいですか?

次のように私の単層の双方向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)) 

答えて

13

まあ、私はケラスの問題に投稿された問題の答えを得ました。このようなアプローチを探している人にとっては、これが役に立つと願っています。 How to implement deep bidirectional -LSTM