Заполнитель вывода подписи Tensorflow - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь экспортировать модель Tensorflow, чтобы использовать ее в обслуживании Tensorflow. Это скрипт, который я использую:

import os
import tensorflow as tf

trained_checkpoint_prefix = '/home/ubuntu/checkpoint'
export_dir = os.path.join('m', '0')

loaded_graph = tf.Graph()
config=tf.ConfigProto(allow_soft_placement=True)
with tf.Session(graph=loaded_graph, config=config) as sess:
    # Restore from checkpoint
    loader = tf.train.import_meta_graph(trained_checkpoint_prefix + 'file.meta')
    loader.restore(sess, tf.train.latest_checkpoint(trained_checkpoint_prefix))

    # Create SavedModelBuilder class
    # defines where the model will be exported
    export_path_base = "/home/ubuntu/m"
    export_path = os.path.join(
        tf.compat.as_bytes(export_path_base),
        tf.compat.as_bytes(str(0)))
    print('Exporting trained model to', export_path)
    builder = tf.saved_model.builder.SavedModelBuilder(export_path)

    batch_shape = (20, 256, 256, 3)
    input_tensor = tf.placeholder(tf.float32, shape=batch_shape, name="X_content")
    predictions_tf = tf.placeholder(tf.float32, shape=batch_shape, name='Y_output')

    tensor_info_input = tf.saved_model.utils.build_tensor_info(input_tensor)
    tensor_info_output = tf.saved_model.utils.build_tensor_info(predictions_tf)

    prediction_signature = (
        tf.saved_model.signature_def_utils.build_signature_def(
            inputs={'image': tensor_info_input},
            outputs={'output': tensor_info_output},
            method_name=tf.saved_model.signature_constants.PREDICT_METHOD_NAME))

    builder.add_meta_graph_and_variables(
        sess, [tf.saved_model.tag_constants.SERVING],
        signature_def_map={
            'style_image':
                prediction_signature,
        })

    builder.save(as_text=True)

Основная проблема - это выходная подпись (Foretions_tf). В этом случае, установив значение placeholder , я получаю сообщение об ошибке, говорящее о том, что его значение должно быть установлено при вызове модели из gRPC. Что я должен использовать вместо этого?

Я пытался

predictions_tf = tf.Variable(0, dtype=tf.float32, name="Y_output")

и

predictions_tf = tf.TensorInfo(dtype=tf.float32)
predictions_tf.name = "Y_output"
predictions_tf.dtype = tf.float32

1 Ответ

0 голосов
/ 24 января 2019

Я мог бы неправильно понять, что вы пытаетесь сделать, но здесь вы в основном создаете новый placeholder для ввода и новый placeholder для вывода.

Что я думаю, вам следует сделать, когда вы загрузите модель, вам нужно получить входной и выходной тензор вашей модели в переменных input tensor и prediction_tf, используя, например,

input_tensor=loaded_graph.get_tensor_by_name('the_name_in_the_loaded_graph:0')
prediction_tf=loaded_graph.get_tensor_by_name('the_pred_name_in_the_loaded_graph:0')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...