Может быть много подходов к этому, я указываю, который может хорошо соответствовать вашей проблеме.
Если вы хотите stack
два LSTM
слоя, тогда return-seq
может помочь в изучениидля другого слоя LSTM
, как показано в следующем примере.
from keras.layers import Dense, Flatten, LSTM, Activation
from keras.layers import Dropout, RepeatVector, TimeDistributed
from keras import Input, Model
seq_length = 15
input_dims = 10
output_dims = 8 # number of classes
n_hidden = 10
model1_inputs = Input(shape=(seq_length,input_dims,))
model1_outputs = Input(shape=(output_dims,))
net1 = LSTM(n_hidden, return_sequences=True)(model1_inputs)
net1 = LSTM(n_hidden, return_sequences=False)(net1)
net1 = Dense(output_dims, activation='relu')(net1)
model1_outputs = net1
model1 = Model(inputs=model1_inputs, outputs = model1_outputs, name='model1')
## Fit the model
model1.summary()
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) (None, 15, 10) 0
_________________________________________________________________
lstm_1 (LSTM) (None, 15, 10) 840
_________________________________________________________________
lstm_2 (LSTM) (None, 10) 840
_________________________________________________________________
dense_3 (Dense) (None, 8) 88
_________________________________________________________________
Другой вариант заключается в том, что вы можете использовать полную последовательность возврата в качестве объектов для следующего слоя.В этом случае создайте простой слой
Dense
, вход которого будет
[batch, seq_len*lstm_output_dims]
.
Примечание. Эти функции могут быть полезны для задачи классификации, но в основном мы использовали составной слой lstm и используем его выводwith-out complete sequence
как функции для слоя классификации.
Этот ответ может быть полезен для понимания других подходов к архитектуре LSTM
для различных целей.