如何解决复制喀拉拉邦LSTM的预测
我正在训练喀拉拉邦的RNN LSTM网络,并且希望复制预测函数。 RNN接受大小为(2000,10,1)的输入,并输出大小为(2000,1)的张量。架构如下
model = Sequential()
model.add(LSTM(units=10,input_shape=(10,1),return_sequences=True))
model.add(TimeDistributed( (Dense(1,activation="linear")) ))
我的目标是使用经过训练的权重复制model.predict()。我通常会关闭,但总是会有点停顿。下面的代码使用第一个输入(0,1)并通过循环计算第一个输出(0,1)。
我正在将隐藏状态和单元状态h_tm1,c_tm1初始化为全零。这个对吗?有人可以看看下面的代码,看看我的计算是否正确?
weight = model.layers[0].get_weights() #weights biases for LSTM
uarr,warr,barr = weight # weights and biases for MLP
w=model.layers[1].get_weights()[0]
b=model.layers[1].get_weights()[1]
hunit=10
for i in range(0,10):
if i==0:
h_tm1=np.zeros([1,hunit])
c_tm1=np.zeros([1,hunit])
else:
h_tm1=h_t
c_tm1=c_t
x_t=X1[i].reshape(1,1)
s_t = (x_t.dot(uarr) + h_tm1.dot(warr) + barr)
i = sigmoid(s_t[:,:hunit])
f = sigmoid(s_t[:,1*hunit:2*hunit])
_c = np.tanh(s_t[:,2*hunit:3*hunit])
o = sigmoid(s_t[:,3*hunit:])
c_t = i*_c + f*c_tm1
h_t = o*np.tanh(c_t)
print(h_t.dot(w) + b)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。