私は、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))