Я пытаюсь описать ситуации полностью. Но из-за моего умения говорить, возможно, будут некоторые неясные утверждения. Пожалуйста, дайте мне знать. Я попытаюсь объяснить мой смысл.
В последнее время я хочу применить FaceNet (я имею в виду проект Дэвискинга на 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)
Но позже у меня будут другие требования. Я тренирую две модели, используя керасы. Я хочу использовать их (модель .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))))
Я печатаю поддельное изображение, чтобы проверить модели. Вроде работает нормально. Но когда я запускаю флеш-сервер и пытаюсь опубликовать изображение в этом 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
Я пытаюсь использовать эти две модели керас без загрузки модели facenet вфляга серверная. Работает нормально. Я думаю, что это должно столкнуться с чем-то (возможно, сессией?), Чтобы эти три модели не могли работать одновременно. Но я не знаю, как решить эту проблему. Пожалуйста, помогите мне! Заранее спасибо.