Как делать прогнозы по моделям TensorFlow Wide и Deep, загруженным в TensorFlow Servings model_server

Может ли кто-нибудь помочь мне сделать прогнозы по модели широкого и глубокого обучения TensorFlow, загруженной в model_server TensorFlow Serving?

Если бы кто-нибудь мог указать мне на ресурс или документацию для того же, было бы очень полезно.


person Vasanti    schedule 17.11.2016    source источник
comment
Вы ознакомились с руководством: tensorflow.github.io/serving/serving_basic? Вы должны экспортировать свою модель в программу обучения.   -  person yuefengz    schedule 18.11.2016
comment
Да, я просмотрел эту документацию и экспортировал свою модель. Однако мне нужно делать прогнозы на моей обученной модели, и мне нужна помощь в этом.   -  person Vasanti    schedule 18.11.2016
comment
Особой разницы между мнистой и широкой и глубокой моделью в плане подачи нет.   -  person yuefengz    schedule 18.11.2016
comment
Как создать request=predict_pb2.PredictRequest()?   -  person Vasanti    schedule 18.11.2016
comment
Может ли кто-нибудь направить меня к документации по отправке запроса на прогноз   -  person Vasanti    schedule 21.11.2016


Ответы (2)


Возможно, вы можете попытаться вызвать метод прогнозирования оценщика и установить as_iterable как false для ndarray.

y = m.predict(input_fn=lambda: input_fn(df_test), as_iterable=False)

Однако обратите внимание на примечание об устаревании здесь для совместимости в будущем.

person Prodipta Ghosh    schedule 19.12.2016

Если ваша модель экспортирована с помощью Estimator.export_savedmodel() и вы успешно создали сам TensorFlow Serving, вы можете сделать что-то вроде этого:

from grpc.beta import implementations
from tensorflow_serving.apis import predict_pb2
from tensorflow_serving.apis import prediction_service_pb2

tf.app.flags.DEFINE_string('server', 'localhost:9000', 'Server host:port.')
tf.app.flags.DEFINE_string('model', 'wide_and_deep', 'Model name.')
FLAGS = tf.app.flags.FLAGS
...
def main(_):

  host, port = FLAGS.server.split(':')
  # Set up a connection to the TF Model Server
  channel = implementations.insecure_channel(host, int(port))
  stub = prediction_service_pb2.beta_create_PredictionService_stub(channel)

  # Create a request that will be sent for an inference
  request = predict_pb2.PredictRequest()
  request.model_spec.name = FLAGS.model
  request.model_spec.signature_name = 'serving_default'

  # A single tf.Example that will get serialized and turned into a TensorProto
  feature_dict = {'age': _float_feature(value=25),
                  'capital_gain': _float_feature(value=0),
                  'capital_loss': _float_feature(value=0),
                  'education': _bytes_feature(value='11th'.encode()),
                  'education_num': _float_feature(value=7),
                  'gender': _bytes_feature(value='Male'.encode()),
                  'hours_per_week': _float_feature(value=40),
                  'native_country': _bytes_feature(value='United-States'.encode()),
                  'occupation': _bytes_feature(value='Machine-op-inspct'.encode()),
                  'relationship': _bytes_feature(value='Own-child'.encode()),
                  'workclass': _bytes_feature(value='Private'.encode())}
  label = 0

  example = tf.train.Example(features=tf.train.Features(feature=feature_dict))
  serialized = example.SerializeToString()

  request.inputs['inputs'].CopyFrom(
    tf.contrib.util.make_tensor_proto(serialized, shape=[1]))

  # Create a future result, and set 5 seconds timeout
  result_future = stub.Predict.future(request, 5.0)
  prediction = result_future.result().outputs['scores']

  print('True label: ' + str(label))
  print('Prediction: ' + str(np.argmax(prediction)))

Здесь я написал простое руководство по Экспорт и обслуживание модели TensorFlow Wide & Deep с более подробной информацией.

Надеюсь, поможет.

person MtDersvan    schedule 09.05.2017