是 - 这是可能的,但真正的累赘。我们来看一个例子。
定义模式:
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
模式完成
现在,我们可以设置初始状态值:
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]
持有细胞状态。
希望有所帮助。
如果我想设置初始隐藏状态,代码是model.layers [1] .states [0] [0] = h_0 – bicepjai