Продолжается этот вопрос ( LSTM - Создание прогнозов для частичной последовательности ).Как описано в предыдущем вопросе, я обучил модель с сохранением состояния LSTM для бинарной классификации с партиями из 100 образцов / меток, например:
[Feature 1,Feature 2, .... ,Feature 3][Label 1]
[Feature 1,Feature 2, .... ,Feature 3][Label 2]
...
[Feature 1,Feature 2, .... ,Feature 3][Label 100]
Код модели:
def build_model(num_samples, num_features, is_training):
model = Sequential()
opt = optimizers.Adam(lr=0.0005, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0001)
batch_size = None if is_training else 1
stateful = False if is_training else True
first_lstm = LSTM(32, batch_input_shape=(batch_size, num_samples, num_features), return_sequences=True,
activation='tanh', stateful=stateful)
model.add(first_lstm)
model.add(LeakyReLU())
model.add(Dropout(0.2))
model.add(LSTM(16, return_sequences=True, activation='tanh', stateful=stateful))
model.add(Dropout(0.2))
model.add(LeakyReLU())
model.add(LSTM(8, return_sequences=True, activation='tanh', stateful=stateful))
model.add(LeakyReLU())
model.add(Dense(1, activation='sigmoid'))
if is_training:
model.compile(loss='binary_crossentropy', optimizer=opt,
metrics=['accuracy', f1])
return model
При прогнозировании, модель не имеет состояния , размер партии равен 1, а вероятность классификации определяется после каждой выборки следующим образом:
[Feature 1,Feature 2, .... ,Feature 10][Label 1] -> (model) -> probability
вызовmodel.reset_states()
после того, как модель закончила обработку партии из 100 образцов.Модель работает, и результаты великолепны.
Примечание. Мои данные - это события, поступающие из из нескольких источников .
Моя проблема:
Когда я проверяю свою модель, я контролирую порядок образцов и могу убедиться, что образцы поступают с одного и того же образца.источник.т. е. все первые 100 выборок получены из источника 1, затем после вызова model.reset_states()
следующие 100 выборок получены из источника 2 и т. д.
Однако в моей производственной среде выборки поступают, например, асинхронно:
Первые 3 образца из источника 1, затем 2 образца из источника 2 и т. Д.
Иллюстрационная:

Мой вопрос:
Как я могу сериализовать состояние модели в определенное время для каждого источника, чтобы я мог сохранить его после каждого образца и затем загрузить егоназад, когда новый образец прибывает из того же источника.