我试图完整描述情况。但是由于我的语言能力,可能会有一些不清楚的陈述。请告诉我。我会尽力解释我的意思。
最近,我想将facenet(我的意思是davisking的项目在github上)应用于我的项目。因此,我写了一堂课
class FacenetEmbedding:
def __init__(self, model_path):
self.sess = tf.InteractiveSession()
self.sess.run(tf.global_variables_initializer())
# Load the model
facenet.load_model(model_path)
# Get input and output tensors
self.images_placeholder = tf.get_default_graph().get_tensor_by_name("input:0")
self.tf_embeddings = tf.get_default_graph().get_tensor_by_name("embeddings:0")
self.phase_train_placeholder = tf.get_default_graph().get_tensor_by_name("phase_train:0")
def get_embedding(self, images):
feed_dict = {self.images_placeholder: images, self.phase_train_placeholder: False}
embedding = self.sess.run(self.tf_embeddings, feed_dict=feed_dict)
return embedding
def free(self):
self.sess.close()
我可以在烧瓶中独立使用此类。
model_path = "models/20191025-223514/"
fe = FacenetEmbedding(model_path)
但是我以后有不同的要求。我使用keras训练两个模型。我想将它们(.h5模型)与上述facenet模型一起使用进行预测。我先加载它们。
modelPic = load_model('models/pp.h5')
lePic = pickle.loads(open('models/pp.pickle', "rb").read())
print(modelPic.predict(np.zeros((1, 128, 128, 3))))
modelM = load_model('models/pv.h5')
leM = pickle.loads(open('models/pv.pickle', "rb").read())
print(modelM.predict(np.zeros((1, 128, 128, 3))))
我打印伪造的图像以测试模型。它似乎正常工作。但是当我运行flask服务器并尝试将图像发布到此api时,消息弹出,并且预测不起作用。
Tensor input_1_3:0, specified in either feed_devices or fetch_devices was not found in the Graph
Exception ignored in: <bound method BaseSession._Callable.__del__ of <tensorflow.python.client.session.BaseSession._Callable object at 0x7ff27d0f0dd8>>
Traceback (most recent call last):
File "/home/idgate/.virtualenvs/Line_POC/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1455, in __del__
self._session._session, self._handle, status)
File "/home/idgate/.virtualenvs/Line_POC/lib/python3.6/site-packages/tensorflow/python/framework/errors_impl.py", line 528, in __exit__
c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors_impl.InvalidArgumentError: No such callable handle: 140675571821088
我尝试使用这两个keras模型而不在烧瓶服务器中加载facenet模型。它正常工作。我认为它必须与某些东西(也许是关于会话?)发生冲突,以使这三个模型不能同时工作。但是我不知道如何解决这个问题。请帮我!预先感谢。