2017-02-23 160 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