LSTM agradáveis e previsões de stream

Treinei um modelo LSTM (construído com Keras e TF) em vários lotes de 7 amostras com 3 recursos cada, com o formato abaixo da amostra (os números abaixo são apenas espaços reservados para fins de explicação), cada lote é rotulado 0 ou 1:

Dados

[
   [[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3]]
   [[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3]]
   [[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3]]
   ...
]

i.e: lotes de m sequências, cada uma com o comprimento 7, cujos elementos são vetores tridimensionais (portanto, o lote tem forma (m * 7 * 3))

Alvo

[
   [1]
   [0]
   [1]
   ...
]

No meu ambiente de produção, os dados são um fluxo de amostras com três recursos [1,2,3],[1,2,3]...). Gostaria de transmitir cada amostra à medida que ela chega ao meu modelo e obter a probabilidade intermediária sem esperar pelo lote inteiro (7) - veja a animação abaixo.

Um dos meus pensamentos estava preenchendo o lote com 0 para as amostras ausentes,[[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[1,2,3]] mas isso parece ser ineficiente.

Apreciará qualquer ajuda que me indique a direção certa de salvar o estado intermediário LSTM de maneira persistente, enquanto aguarda a próxima amostra e prevejo um modelo treinado em um tamanho de lote específico com dados parciai

Atualizar incluindo o código do modelo:

opt = optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=10e-8, decay=0.001)
model = Sequential()

num_features = data.shape[2]
num_samples = data.shape[1]

first_lstm = LSTM(32, batch_input_shape=(None, num_samples, num_features), return_sequences=True, activation='tanh')
model.add(
    first_lstm)
model.add(LeakyReLU())
model.add(Dropout(0.2))
model.add(LSTM(16, return_sequences=True, activation='tanh'))
model.add(Dropout(0.2))
model.add(LeakyReLU())
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy', optimizer=opt,
              metrics=['accuracy', keras_metrics.precision(), keras_metrics.recall(), f1])

Resumo do modelo:

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
lstm_1 (LSTM)                (None, 100, 32)           6272      
_________________________________________________________________
leaky_re_lu_1 (LeakyReLU)    (None, 100, 32)           0         
_________________________________________________________________
dropout_1 (Dropout)          (None, 100, 32)           0         
_________________________________________________________________
lstm_2 (LSTM)                (None, 100, 16)           3136      
_________________________________________________________________
dropout_2 (Dropout)          (None, 100, 16)           0         
_________________________________________________________________
leaky_re_lu_2 (LeakyReLU)    (None, 100, 16)           0         
_________________________________________________________________
flatten_1 (Flatten)          (None, 1600)              0         
_________________________________________________________________
dense_1 (Dense)              (None, 1)                 1601      
=================================================================
Total params: 11,009
Trainable params: 11,009
Non-trainable params: 0
_________________________________________________________________

questionAnswers(4)

yourAnswerToTheQuestion