复制喀拉拉邦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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...