Я недавно работал над vgg16, чтобы повторно использовать его модели.
в питоне: (керас)
model = applications.VGG16(include_top=False, weights='imagenet')
и все хорошо.
Мне нужно экспортировать эту модель с компиляцией и подгонкой для экспорта j ++ файла c ++.
Как правильно экспортировать модель ThiS в файл h5, чтобы использовать его для экспорта модели?
Один из подходов состоит в том, чтобы преобразовать вашу модель Keras в модель TensorFlow в Python, а затем экспортировать замороженный график в .pb
файл. Затем загрузите это в C ++. Я использовал этот кусок кода для экспорта замороженного .pb
файл из Кераса.
import tensorflow as tf
from keras import backend as K
from tensorflow.python.framework import graph_util
K.set_learning_phase(0)
model = function_that_returns_your_keras_model()
sess = K.get_session()
output_node_name = "my_output_node" # Name of your output node
with sess as sess:
init_op = tf.global_variables_initializer()
sess.run(init_op)
graph_def = sess.graph.as_graph_def()
output_graph_def = graph_util.convert_variables_to_constants(
sess,
sess.graph.as_graph_def(),
output_node_name.split(","))
tf.train.write_graph(output_graph_def,
logdir="my_dir",
name="my_model.pb",
as_text=False)
Затем вы можете следовать любому учебнику о том, как загрузить .pb
файл в C ++. Для примера этот: https://medium.com/jim-fleming/loading-a-tensorflow-graph-with-the-c-api-4caaff88463f
Keras внедряет переменную learning_phase в граф TensorFlow и, возможно, также другие переменные только для Keras — если я правильно помню, вы должны обязательно удалить их из графика.
Других решений пока нет …