Is it possible to get variable output length from RNN, i.e. input_seq_length != output_seq_length?
Here is an example showing LSTM output shape, test_rnn_output_v1
default settings - return only output for last step, test_rnn_output_v2
return output for all steps, i.e. I need something like test_rnn_output_v2
but with output shape (None, variable_seq_length, rnn_dim)
or at least (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()