Tensorflow-Обслуживание с несколькими входами не дает правильного выхода - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть 2 заполнителя, которые должны быть предоставлены как входные данные и обработать их

И я сохранил эту модель.

tf.app.flags.DEFINE_integer('model_version',3, 'version number of the model.')
tf.app.flags.DEFINE_string('work_dir', '', 'Working directory.')
FLAGS = tf.app.flags.FLAGS

sess = tf.InteractiveSession()
# define the tensorflow network and do some trains

x = tf.placeholder("float", name="x")
z = tf.placeholder("float", name="z")
z1 = tf.Variable(1.0, name="bias")

sess.run(tf.global_variables_initializer())

rt = tf.multiply(z, z1,name='rt')
rt = tf.to_float(rt,name = 'rt')

rtt = tf.add(1.0, rt, name='rtt')
rtt=tf.to_float(rtt,name='rtt')

y = tf.multiply(x, rtt,name='y')

export_path_base = FLAGS.work_dir
export_path = os.path.join(tf.compat.as_bytes(export_path_base),
  tf.compat.as_bytes(str(FLAGS.model_version)))
print('Exporting trained model to', export_path)
builder = tf.saved_model.builder.SavedModelBuilder(export_path)


tensor_info_x = tf.saved_model.utils.build_tensor_info(x)
tensor_info_z = tf.saved_model.utils.build_tensor_info(z)
tensor_info_y = tf.saved_model.utils.build_tensor_info(y)


prediction_signature = (
  tf.saved_model.signature_def_utils.build_signature_def(
  inputs={'input': tensor_info_x,
          'inputz': tensor_info_z},
  outputs={'output': tensor_info_y},
  method_name=tf.saved_model.signature_constants.PREDICT_METHOD_NAME))

legacy_init_op = tf.group(tf.tables_initializer(), name='legacy_init_op')

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

На стороне клиента я отправляю входные данные tenor_proto для подачи в заполнитель

class Session():

    def __init__(self):
        host, port = FLAGS.server.split(':')
        channel = implementations.insecure_channel(host, int(port))
        self.stub = prediction_service_pb2.beta_create_PredictionService_stub(channel)

        self.request = predict_pb2.PredictRequest()
        self.request.model_spec.name = 'New_model'
        self.request.model_spec.signature_name = 'prediction'

    def inference(self, val_x,val_y):
        self.request.inputs['input'].CopyFrom(tf.contrib.util.make_tensor_proto(val_x))
        self.request.inputs['inputz'].CopyFrom(tf.contrib.util.make_tensor_proto(val_y))
        result = self.stub.Predict(self.request, 5.0)
        return result

run = Session()

Когда я запускаю эту модель, она не выдает ошибку, но выдает неверные значения. Например, если я отправляю x = 1000 и z = 10, он показывает выходные данные x (то есть 1000), а не фактические выходные данные 11000. Я не знаю, где я иду не так

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