2017-02-23 155 views

回答

4

是 - 這是可能的,但真正的累贅。我們來看一個例子。

  1. 定義模式:

    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") 
    

    它首先建立和編譯模型,在編譯的初始狀態是復位是非常重要的。此外 - 你需要指定一個batch_shape其中batch_size被指定爲在這種情況下我們的網絡應該是stateful(這是通過設置stateful=True模式完成

  2. 現在,我們可以設置初始狀態值:

    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 
    

    請注意,您需要提供國家作爲keras變量。states[0]擁有隱藏的狀態和states[1]持有細胞狀態。

希望有所幫助。

+0

如果我想設置初始隱藏狀態,代碼是model.layers [1] .states [0] [0] = h_0 – bicepjai