在这篇研究论文中,出现了以下段落,
每个 LSTM 模型的状态都存储在两个固定大小的实数向量中,称为存储单元和最后一个输出。由于我们的 LSTM 模型被训练来预测用户的行为,这些向量的元素是用户相关特征的自然候选者。它们可以通过得到的预测(问题的答案)来扩展。这样,从第二个 LSTM 层的存储单元 (100) 和最后一个输出 (100) 以及最终输出 (18) 中获得了 218 个新特征。
我知道获得每一层的权重。但是如何得到这两个向量呢?
在这篇研究论文中,出现了以下段落,
每个 LSTM 模型的状态都存储在两个固定大小的实数向量中,称为存储单元和最后一个输出。由于我们的 LSTM 模型被训练来预测用户的行为,这些向量的元素是用户相关特征的自然候选者。它们可以通过得到的预测(问题的答案)来扩展。这样,从第二个 LSTM 层的存储单元 (100) 和最后一个输出 (100) 以及最终输出 (18) 中获得了 218 个新特征。
我知道获得每一层的权重。但是如何得到这两个向量呢?
看了这篇文章后自己回答。其实这段话是这么说的新功能来自 -
从同一篇文章中,可以在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)]