Можно ли получить переменную длину вывода из RNN, т.е. input_seq_length! = Output_seq_length?
Вот пример, показывающий форму вывода LSTM, test_rnn_output_v1
настройки по умолчанию - возвращать только выходные данные для последнего шага, test_rnn_output_v2
вернуть вывод для всех шагов, т.е. мне нужно что-то вроде test_rnn_output_v2
, но с выходной формой (None, variable_seq_length, rnn_dim)
или, по крайней мере, (None, max_output_seq_length, rnn_dim)
.
from keras.layers import Input
from keras.layers import LSTM
from keras.models import Model
def test_rnn_output_v1():
max_seq_length = 10
n_features = 4
rnn_dim = 64
input = Input(shape=(max_seq_length, n_features))
out = LSTM(rnn_dim)(input)
model = Model(inputs=[input], outputs=out)
print(model.summary())
# (None, max_seq_length, n_features)
# (None, rnn_dim)
def test_rnn_output_v2():
max_seq_length = 10
n_features = 4
rnn_dim = 64
input = Input(shape=(max_seq_length, n_features))
out = LSTM(rnn_dim, return_sequences=True)(input)
model = Model(inputs=[input], outputs=out)
print(model.summary())
# (None, max_seq_length, n_features)
# (None, max_seq_length, rnn_dim)
test_rnn_output_v1()
test_rnn_output_v2()