Вызов LSTM с учетом состояния в качестве функциональной модели?

У меня есть LSTM с состоянием, определяемый как последовательная модель:

model = Sequential() model.add(LSTM(..., stateful=True)) ... 

Позже я использую его как функциональную модель:

 input_1, input_2 = Input(...), Input(...) output_1 = model(input_1) output_2 = model(input_2) # Is the state from input_1 preserved? 

input_1 ли состояние от input_1 когда мы снова применяем model на input_2 ? Если да, как я могу сбросить состояние модели между вызовами?

Следуя примечанию об использовании состояния в RNN из этой ссылки и реализации Keras, ответ да, если:

  1. batch_size в обеих моделях одинаковый (это важно из-за того, как Keras вычисляет внутренние состояния).
  2. Сначала вы строили и компилировали обе модели, а затем использовали их – по какой-то причине Keras сбрасывает внутренние состояния во время build слоя (вы можете проверить его здесь , ища метод reset_states ).

Если вы хотите сбросить состояния, вы можете вызвать метод reset_states на каждом повторном уровне, на котором вы хотите сбросить состояния сброса.