7

Mam pełnostanowego LSTM zdefiniowany jako sekwencyjnego modeluWywołanie stanu LSTM jako modelu funkcjonalnego?

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

Później używam go jako wzór funkcjonalne:

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

jest stan z input_1 zachowana gdy stosujemy model ponownie input_2 ? Jeśli tak, w jaki sposób mogę zresetować stan modelu między wywołaniami?

Odpowiedz

0

Po Uwaga dotycząca korzystania statefulness w RNNs z tego link i Keras implementation odpowiedź jest tak jeżeli:

  1. batch_size w obu modelach jest taki sam (jest to ważne ze względu na sposób Keras wylicza stany wewnętrzne).
  2. Najpierw skompilujesz i skompilujesz oba modele, a następnie użyjesz ich - z jakiegoś powodu Keras resetuje stany wewnętrzne podczas build warstwy (możesz to sprawdzić here szukając metody reset_states).

Jeśli chcesz zresetować stany, możesz wywołać metodę reset_states na każdej warstwie cyklicznej, w której chcesz ustawić stan resetowania.

+1

Dzięki! Ale czy wiesz, gdzie w [Warstwie podstawowej klasy] (https://github.com/fchollet/keras/blob/57429d1567b94955ac95afe87792411a420ff0ba/keras/engine/topology.py) są stany zapisane dla modelu stanowego nazywanego jako funkcja? – kennysong

+1

Ale opcja stanowa ma sens tylko dla powtarzających się warstw. Inne warstwy nie mają stanu, który należy zapamiętać. –

+1

Ach tak, więc nie byłoby w "Warstwie". Gdzie dokładnie są zapisane stany dla modelu stanowego zwanego funkcją? – kennysong

Powiązane problemy