python - Keras:加载多个模型并在不同线程中进行预测
问题描述
我正在使用带有 tensorflow 核心的 Keras。我想在构造函数中加载 2 个不同的模型,然后在不同的线程中进行预测(根据请求)。我试图在 tensorflow 图形上下文中加载这些模型,但没有奏效。我的代码:
from keras.models import load_model
from keras import Sequential
def __init__(self):
self.graph_A = tf.Graph()
with self.graph_A.as_default():
self.model_A: Sequential = load_model('model_A_filename')
self.graph_B = tf.Graph()
with self.graph_B.as_default():
self.model_B: Sequential = load_model('model_B_filename')
def predict_with_model_A(X):
with self.graph_A.as_default():
return self.model_A.predict(X)
def predict_with_model_B(X):
with self.graph_B.as_default():
return self.model_B.predict(X)
当我运行程序时,模型 A 已成功加载。但是我在加载模型 B 时收到错误消息:
TypeError: Cannot interpret feed_dict key as Tensor: Tensor
Tensor("Placeholder:0", shape=(7626, 210), dtype=float32) is not an element
of this graph.
会很高兴听到,如何正确地做。谢谢!
解决方案
每次处理后尝试重置图表。对于 keras,使用 K.clear_session()。为每个图表使用单独的会话。
class Model:
@staticmethod
def loadmodel(path):
return loadmodel(path)
def ___init__(self, path):
self.model = self.loadmodel(path)
self.graph = tf.get_default_graph()
def predict(self, X):
with self.graph.as_default():
return self.model.predict(X)
model1 = Model('model1.h5')
model1.predict(test_data)
model2 = Model('model2.h5')
model2.predict(test_data)
推荐阅读
- javascript - 为端点应用 JWT Guard,但当它有请求参数时不应用它
- javascript - React useState:切换对象内部的布尔属性-如何识别onClick源?
- c - 在while循环中使用时如何访问scanf的返回值?
- python - 如何从 2 个类继承而无需更改原始类?
- android - 理解 shouldShowRequestPermissionRationale
- c# - Nuget SurveyMonkeyApi SSL/TLS 连接问题
- winapi - 如何将Win32 App的背景颜色初始化为白色以外的颜色以避免ShowWindow上的闪烁?
- php - Laravel 中的 AWS 外观无法正确实例化 CloudSearch 类
- javascript - Fetch() 数据未显示在服务器端
- android - 亚行离线和缺失的问题