首页 > 解决方案 > 将 keras 预测作为张量图用于张量流

问题描述

我目前有一个自定义 LSTM 模型,我使用 save() 将其保存为 .h5 文件。我在张量流图构建期间使用 load_model() 加载此模型,并希望使用 LSTM 模型的预测输出(因此我需要以张量的形式)来构建图的一部分。我已经为 tensorflow 图和 keras 后端图建立了相同的会话,但是我无法将输出连接到我的 tensorflow 代码图。使用标准的 predict() 似乎试图运行 keras 模型的会话,我已经在互联网上搜索了一些东西,而不是将其可怕地转换为 .pb 文件并像那样搞乱它。考虑到我使用 tensorflow 作为 Keras 后端,这似乎应该很容易......关于如何实现这一点的任何想法?

标签: pythontensorflowkeras

解决方案


我将展示如何将保存的 keras 模型导入到 tensorflow 图中。我将使用简单的单层前馈模型来展示这一点。

inputs = tf.keras.layers.Input(shape=(1,), name="inputs") 
outputs = tf.keras.layers.Dense(1, activation="linear", name="outputs")(inputs) 
model = tf.keras.models.Model(inputs=inputs, outputs=outputs) 
model.compile(loss="mse", optimizer="adam")
model.save("model.h5")

现在让我们使用 keras 的load_model方法加载模型,并在 tensorflow 中使用它来将模型的输出与新的占位符张量相乘。

model = tf.keras.models.load_model("model.h5")
model_output = model.output
new_tensor_ph = tf.placeholder(tf.float32, [None, 1])
new_output = tf.multiply(model_output, new_tensor_ph)

sess = tf.keras.backend.get_session() 
prediction = sess.run(new_output, feed_dict={model.input:[[3]],new_tensor_ph :[[4]]})
## This works without error

推荐阅读