Здесь я написал простой учебник Exporting and Serving a TensorFlow Wide & Deep Model.
Для экспорта оценщика четыре шага:
Определения возможностей для экспорта в виде списка всех функций, используемых во время инициализации оценивани.
Создайте конфигурацию конфигурации, используя create_feature_spec_for_parsing
.
Сборка a serving_input_fn
подходит для использования в обслуживании с использованием input_fn_utils.build_parsing_serving_input_fn
.
Экспорт модели с использованием export_savedmodel()
.
Чтобы запустить клиентский сценарий правильно, вы должны сделать следующие три шага:
создать и разместить свой сценарий где-нибудь в/служащей/папки, например,/serve/tensorflow_serving/example/
Создайте или измените соответствующий файл BUILD, добавив py_binary
.
Создайте и запустите сервер модели, например. tensorflow_model_server
.
Создайте и запустите клиент, который отправит tf.Example на наш tensorflow_model_server
для вывода.
Если модель экспортируется с помощью Estimator.export_savedmodel()
и вы успешно построили TensorFlow сервировки себя, вот что вы можете сделать:
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)))
Для получения более подробной информации смотрите на самом уроке.
Надеюсь, это поможет.
P.S. Существует не менее 4 дубликатов для данного типа вопросов.Если кто-то с высокой репутацией может закрыть или сгруппировать их, что было бы неплохо)
Добро пожаловать в SO. Пожалуйста, прочтите это [как-ответ] (http://stackoverflow.com/help/how-to-answer) для предоставления качественного ответа. – thewaywewere
Вы можете найти ** serve_default ** здесь [signature_constants] (https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/saved_model/signature_constants.py). Конкретные оценки автоматически определяют их. – MtDersvan