Как загрузить TenorFlow модель .pb в java, экспортированную из keras - PullRequest
1 голос
/ 02 июля 2019

Я пытаюсь загрузить модель в java, которая изначально сохранена в keras в Java, чтобы я мог сделать вывод внутри процесса в существующей производственной системе, которая работает на Java.

Я не видел способа легко загрузить модели Keras h5 в Java, поэтому я пытаюсь сначала преобразовать его в файл .pb с помощью simple_save, а затем загрузить его с помощью тега по умолчанию для simple_save. Я попытался сохранить график напрямую, используя процедуру freeze_session и tf.train.write_graph, но у меня была та же ошибка.

Вот код для сохранения моей модели в файл .pb

# my model has two input tensors and one output tensor
inputs = {'input_1': model.inputs[0], 'input_2' : model.inputs[1]}
outputs = {'output_1' : model.outputs[0]}

tf.saved_model.simple_save(K.get_session(), 'output_dir', inputs=inputs, outputs=outputs)

Вот мой Java-код для загрузки модели с использованием тега по умолчанию для save_model:

SavedModelBundle model = SavedModelBundle.load("output_dir", "serve");

Это приводит к ошибке:

Исключение в потоке "main" org.tensorflow.TensorFlowException: Не удалось найти SavedModel .pb или .pbtxt по указанному пути каталога экспорта: output_dir

Есть идеи, что я могу делать не так? Я знаю, что simple_save устарела, но я просто пытаюсь заставить что-либо работать на этом этапе.

1 Ответ

0 голосов
/ 11 июля 2019

Я посмотрел на собственный исходный код , который загружает модель, и оказалось, что существует жестко запрограммированное имя файла «Saved_model.pb», или для текстовой версии «сохраненная_модель.pbtxt» этоожидает в каталоге (который не был указан в документации, которую я смотрел).

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