Я обучил GAN с tenorflow и теперь я хочу использовать его в своем проекте c ++.
Мой GAN выглядит примерно так (вход и выход — оба изображения):
image = tf.placeholder(tf.float32, shape=[BATCH_SIZE, 3, SIZE, SIZE])
input = 2*((tf.cast(image, tf.float32)/255.)-.5) #0~255 to -1~1
output = GAN(input) #GAN is my network including many modules
И я заметил, что есть saved_model
инструменты могут сохранить мою модель в saved_model.pb
который я могу использовать непосредственно в C ++.
Мой код для этого выглядит так:
tensor_input_info = tf.saved_model.utils.build_tensor_info(input)
tensor_output_info = tf.saved_model.utils.build_tensor_info(output)
gan_signature = (
tf.saved_model.signature_def_utils.build_signature_def(
inputs={'image': tensor_input_info},
outputs={'result': tensor_output_info},
method_name='gan'
)
)
legacy_init_op = tf.group(tf.tables_initializer(), name='legacy_init_op')
builder.add_meta_graph_and_variables(
session, [tf.saved_model.tag_constants.SERVING],
signature_def_map={
'my_gan':gan_signature
},
legacy_init_op=legacy_init_op)
builder.save()
Здесь я не уверен насчет ключа в dict. В этом коде я использовал «изображение» как ключ к моему вводу, но я не знаю, правильно ли это. Даже когда я получил saved_model.pb
успешно.
И теперь я не знаю, что делать, как я могу использовать это в своем проекте C ++?
Задача ещё не решена.
Других решений пока нет …