Variação do comprimento da sequência em Keras sem preenchimento

Eu tenho uma pergunta sobre tamanhos variados de sequência para LSTMs em Keras. Estou passando lotes do tamanho 200 e sequências de comprimentos variáveis (= x) com 100 recursos para cada objeto na sequência (=> [200, x, 100]) em um LSTM:

LSTM(100, return_sequences=True, stateful=True, input_shape=(None, 100), batch_input_shape=(200, None, 100))

Estou ajustando o modelo nas seguintes matrizes criadas aleatoriamente:

x_train = np.random.random((1000, 50, 100))
x_train_2 = np.random.random((1000, 10,100))

Tanto quanto eu entendi LSTMs (e a implementação Keras) corretamente, x deve se referir ao número de células LSTM. Para cada célula LSTM, é necessário aprender um estado e três matrizes (para entrada, estado e saída da célula). Como é possível passar diferentes comprimentos de sequência para o LSTM sem preencher no máximo. comprimento especificado, como eu fiz? O código está sendo executado, mas na verdade não deveria (no meu entendimento). É até possível passar outro x_train_3 com um tamanho de sequência de 60 depois, mas não deve haver estados e matrizes para as 10 células extras.

A propósito, estou usando o Keras versão 1.0.8 e o Tensorflow GPU 0.9.

Aqui está o meu código de exemplo:

from keras.models import Sequential
from keras.layers import LSTM, Dense
import numpy as np
from keras import backend as K

with K.get_session():

    # create model
    model = Sequential()
    model.add(LSTM(100, return_sequences=True, stateful=True, input_shape=(None, 100),
             batch_input_shape=(200, None, 100)))
    model.add(LSTM(100))
    model.add(Dense(2, activation='softmax'))
    model.compile(loss='categorical_crossentropy',
                  optimizer='rmsprop',
                  metrics=['accuracy'])

    # Generate dummy training data
    x_train = np.random.random((1000, 50, 100))
    x_train_2 = np.random.random((1000, 10, 100))
    y_train = np.random.random((1000, 2))
    y_train_2 = np.random.random((1000, 2))

    # Generate dummy validation data
    x_val = np.random.random((200, 50, 100))
    y_val = np.random.random((200, 2))

    # fit and eval models
    model.fit(x_train, y_train, batch_size=200, nb_epoch=1, shuffle=False, validation_data=(x_val, y_val), verbose=1)
    model.fit(x_train_2, y_train_2, batch_size=200, nb_epoch=1, shuffle=False, validation_data=(x_val, y_val), verbose=1)
    score = model.evaluate(x_val, y_val, batch_size=200, verbose=1)

questionAnswers(1)

yourAnswerToTheQuestion