Подтвердить что ты не робот

Преобразование модели Keras в TensorFlow protobuf

В настоящее время мы изучаем различные нейронные сети, использующие Keras, что идеально, потому что имеет приятный интерфейс и относительно прост в использовании, но мы хотели бы применять их в нашей производственной среде.

К сожалению, производственная среда - С++, поэтому наш план состоит в следующем:

  • Используйте базу данных TensorFlow для сохранения модели в protobuf
  • Свяжите наш производственный код с TensorFlow, а затем загрузите в protobuf

К сожалению, я не знаю, как получить доступ к утилитам экономии TensorFlow от Keras, которые обычно сохраняются в HDF5 и JSON. Как сохранить в protobuf?

4b9b3361

Ответ 2

Вы можете получить доступ к серверу TensorFlow:

import keras.backend.tensorflow_backend as K

Затем вы можете вызвать любую утилиту TensorFlow или функцию, например:

K.tf.ConfigProto

Ответ 3

Если вам не нужно использовать GPU в среде, в которую вы развертываете, вы также можете использовать мою библиотеку, называемую экономно. Он доступен на GitHub и опубликован под лицензией MIT: https://github.com/Dobiasd/frugally-deep

бережливость позволяет запускать переходы на уже обученных моделях Keras непосредственно на С++ без необходимости связывания с TensorFlow или любым другим backend.

Ответ 4

Сохраните модель keras как файл HDF5.

Затем вы можете выполнить преобразование с помощью следующего кода:

from keras import backend as K
from tensorflow.python.framework import graph_util
from tensorflow.python.framework import graph_io

weight_file_path = 'path to your keras model'
net_model = load_model(weight_file_path)
sess = K.get_session()

constant_graph = graph_util.convert_variables_to_constants(sess, sess.graph.as_graph_def(), 'name of the output tensor')
graph_io.write_graph(constant_graph, 'output_folder_path', 'output.pb', as_text=False)
print('saved the constant graph (ready for inference) at: ', osp.join('output_folder_path', 'output.pb'))

Вот мой пример кода, который обрабатывает несколько случаев ввода и множественного вывода: https://github.com/amir-abdi/keras_to_tensorflow