【发布时间】:2020-06-30 15:31:58
【问题描述】:
我有以下序列标记 Keras 模型:
model = tf.keras.Sequential([
tf.keras.layers.Dropout(0.5),
tf.keras.layers.LSTM(64, return_sequences=True),
tf.keras.layers.Dense(2)
])
该模型采用一系列向量并预测两个类的 logits。
在实时应用程序中,我每秒获取一个这些向量,并且我想仅对收到的新向量执行推理,以便使用 LSTM 的先前隐藏状态。
例如,如果我只是接收向量并运行:
# Received a
model(a)
# Received b
model(b)
该模型独立运行两个向量(a 和 b),并且不利用 LSTM 在步骤 a 之后存储在隐藏状态的时间信息。
有没有办法执行推理并使用这些状态?
不使用时间信息的示例预测代码
model = tf.keras.models.load_model('./.save/3jbry45d')
model.build(input_shape=(None, None, 25))
random_vec = tf.convert_to_tensor(np.random.randn(1, 1, 25))
for i in range(5):
print(model.predict(random_vec))
打印 5 次:
[[[ 0.11500816 -0.5686636 ]]]
【问题讨论】:
-
使用
model.predict就可以了。 -
@BjörnLindqvist 我如何确认它实际上使用了以前的隐藏状态而不是全新的隐藏状态?有什么来源吗?
-
简单。两次输入相同的输入向量并观察输出。
-
@BjörnLindqvist 这总是返回相同的输出。我添加了示例代码,以便您可以看到我在做什么
标签: python tensorflow keras lstm