如何获得记忆单元的向量和最后的输出大号小号吨米LSTM在喀拉拉邦?

数据挖掘 深度学习 喀拉斯 lstm
2022-03-10 15:27:47

这篇研究论文中,出现了以下段落,

每个 LSTM 模型的状态都存储在两个固定大小的实数向量中,称为存储单元和最后一个输出。由于我们的 LSTM 模型被训练来预测用户的行为,这些向量的元素是用户相关特征的自然候选者。它们可以通过得到的预测(问题的答案)来扩展。这样,从第二个 LSTM 层的存储单元 (100) 和最后一个输出 (100) 以及最终输出 (18) 中获得了 218 个新特征。

我知道获得每一层的权重。但是如何得到这两个向量呢?

1个回答

看了这篇文章后自己回答。其实这段话是这么说的218新功能来自 -

  1. 第二个 LSTM 层的记忆单元或记忆单元:它将给出一个向量100单元状态(每个存储单元对应的单元状态)。请注意,向量的维度等于隐藏记忆单元的数量。
  2. 第二个 LSTM 层的最后输出:它将给出一个列表100单元输出(每个存储单元/单元的单元输出)。
  3. 最终输出:最终输出最终将包括18维向量。尺寸是 -2为一个),6对于(b),4对于 (c),3对于(d),2前面),1(f)。

从同一篇文章中,可以在keras中使用return_state=True参数来实现。

from keras.models import Model
from keras.layers import Input
from keras.layers import LSTM
from numpy import array
# define model
inputs1 = Input(shape=(3, 1))
lstm1, state_h, state_c = LSTM(2, return_sequences=True, return_state=True)(inputs1)
model = Model(inputs=inputs1, outputs=[lstm1, state_h, state_c])
# define input data
data = array([0.1, 0.2, 0.3]).reshape((1,3,1))
# make and show prediction
print(model.predict(data))

这输出,

[array([[[-0.00559822, -0.0127107 ],
    [-0.01547669, -0.03272599],
    [-0.02800457, -0.0555565 ]]], dtype=float32), array([[-0.02800457, -0.0555565 ]], dtype=float32), array([[-0.06466588, -0.12567174]], dtype=float32)]