2017-04-10 145 views
0

我有一个LSTM模型,当我处理一个批处理时,我想重置LSTM层的状态。然后在几个进程之后,我想恢复LSTM的原始状态(使用新权重我在上述几个过程中学到了)并继续处理。我知道我可以使用reset_state()函数来重置LSTM状态。我怎样才能恢复LSTM状态?如何恢复Keras LSTM状态

在此先感谢!

回答

1

它不是很清楚你在问什么,但是从我的理解中,你想用一组给定的权重来初始化LSTM。从docs:在RNNs

指定的初始状态

注意:您可以通过 关键字参数initial_state称他们指定RNN层的初始状态。 initial_state的值应该是 是表示RNN图层的初始状态的张量或张量列表。

我还没有想出如何使用顺序模型 添加初始状态,但这里是你将如何使用functional API做到这一点:

X = np.array([[[1, 0], 
       [1, 0], 
       [1, 0], 
       [1, 0]], 

       [[1, 0], 
       [1, 0], 
       [1, 0], 
       [1, 0]]] 
      ) 

y = np.array([[1], 
       [2]]) 

inp = Input(shape=(4, 2)) 
base = LSTM(10) 
enc = base(inp, initial_state=[]) 
out = Dense(1, activation='softmax')(enc) 
model = Model(inp, out) 
model.compile(loss='mse', optimizer='adam') 
model.fit(X, y) 
+0

是啊,这就是我想要的。谢谢 ! – YjyJeff