Как прогнозировать в нескольких моделях, состоящих из модели тензорного потока (.pb) и модели кераса (.h5) одновременно в колбе? - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь описать ситуации полностью. Но из-за моего умения говорить, возможно, будут некоторые неясные утверждения. Пожалуйста, дайте мне знать. Я попытаюсь объяснить мой смысл.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...