Initializing LSTM hidden state Tensorflow/Keras

前端 未结 4 799
盖世英雄少女心
盖世英雄少女心 2020-12-08 17:50

Can someone explain how can I initialize hidden state of LSTM in tensorflow? I am trying to build LSTM recurrent auto-encoder, so after i have that model trained i want to t

4条回答
  •  一整个雨季
    2020-12-08 18:32

    Yes - this is possible but truly cumbersome. Let's go through an example.

    1. Defining a model:

      from keras.layers import LSTM, Input
      from keras.models import Model
      
      input = Input(batch_shape=(32, 10, 1))
      lstm_layer = LSTM(10, stateful=True)(input)
      
      model = Model(input, lstm_layer)
      model.compile(optimizer="adam", loss="mse")
      

      It's important to build and compile model first as in compilation the initial states are reset. Moreover - you need to specify a batch_shape where batch_size is specified as in this scenario our network should be stateful (which is done by setting a stateful=True mode.

    2. Now we could set the values of initial states:

      import numpy
      import keras.backend as K
      
      hidden_states = K.variable(value=numpy.random.normal(size=(32, 10)))
      cell_states = K.variable(value=numpy.random.normal(size=(32, 10)))
      
      model.layers[1].states[0] = hidden_states
      model.layers[1].states[1] = cell_states 
      

      Note that you need to provide states as a keras variables. states[0] holds hidden states and states[1] holds cell states.

    Hope that helps.

提交回复
热议问题