我正在使用带有Tensorflow核心的Keras。 我想在构造函数中加载2个不同的模型, 然后根据请求在不同的线程中进行预测。 我试图在张量流图上下文中加载这些模型,但是没有用。我的代码:
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.
我们将很高兴听到您如何正确执行操作。谢谢!
答案 0 :(得分:0)
尝试在处理后每次重设图形。 对于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)