2017-08-23 63 views
0

我是tensorflow的新手。我遵循tensorflow服务说明在码头集装箱中为模型提供服务。我可以按照https://www.tensorflow.org/serving/的说明为mnist和启动模型提供服务。保存模型Tensorflow服务

的服务模型保存在以下结构:

. 
|-- inception-export 
| `-- 1 
|  |-- saved_model.pb 
|  `-- variables 
|   |-- variables.data-00000-of-00001 
|   `-- variables.index 
`-- mnist_model 
    `-- 1 
     |-- saved_model.pb 
     `-- variables 
      |-- variables.data-00000-of-00001 
      `-- variables.index 

问题:

  1. 如何再培训服务模式?

我按照https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/#0的指示重新训练模型。

python retrain.py \ 
    --bottleneck_dir=bottlenecks \ 
    --how_many_training_steps=500 \ 
    --model_dir=inception \ 
    --summaries_dir=training_summaries/basic \ 
    --output_graph=retrained_graph.pb \ 
    --output_labels=retrained_labels.txt \ 
    --image_dir=flower_photos 

上面的命令创建retrained_graph.pb以及retrained_label.txt和bottleneck目录。

如何将格式的输出转换为可通过Tensorflow服务器提供再培训模型?

  1. 如何提供预训练模型?

    我已经看过物体检测演示https://github.com/tensorflow/models/blob/master/object_detection/object_detection_tutorial.ipynb,它解释了如何在对象检测中使用带有Mobilenet的“SSD”模型(https://github.com/tensorflow/models/blob/master/object_detection/g3doc/detection_model_zoo.md)。

    的ssd_mobilenet_v1_coco_11_06_2017.tar.gz包含

    - a graph proto (graph.pbtxt) 
    - a checkpoint (model.ckpt.data-00000-of-00001, model.ckpt.index, model.ckpt.meta) 
    - a frozen graph proto with weights baked into the graph as constants (frozen_inference_graph.pb) 
    

    如何转换上述文件的格式,以便预训练的模型可以通过Tensorflow服务服务器提供服务?

  2. 如何为通过Tensorflow服务服务器提供的自定义模型创建客户端?

我按照说明在http://fdahms.com/2017/03/05/tensorflow-serving-jvm-client/创建自定义模型。博客解释了如何通过张量服务器服务器和客户端来创建自定义服务,以访问模型。创建客户端的过程不是很清楚。我想用Python和Java创建客户端。

是否有更好的示例或指南来帮助理解为通过Tensorflow服务服务器提供的自定义模型创建客户端代码的过程。

+0

可能使用:https://stackoverflow.com/questions/46098863/how-to -import-AN-保存-tensorflow模型-列车使用-TF-估计和 - 预测通/ 46139198?noredirect = 1个#comment79297585_46139198 – rhaertel80

回答

0

Tensorflow现在支持SavedModel格式。如果你有一个重新训练的模型,实际上你不需要使用对象检测。你可以做的是使用保护从以前的格式重新训练模型还原会话,然后用SavedModelBuilder由可能产生的TF服务可以起到savedmodel再次导出。 Here是我对类似问题的另一个答案。

至于客户端,可以参考下面的代码,这也是在TF服务/示例的示例:

from grpc.beta import implementations 
import tensorflow as tf 

from tensorflow_serving.apis import predict_pb2 
from tensorflow_serving.apis import prediction_service_pb2 

tf.app.flags.DEFINE_string('server', 'localhost:9000', 
          'PredictionService host:port') 
FLAGS = tf.app.flags.FLAGS 


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

    request = predict_pb2.PredictRequest() 
    request.model_spec.name = 'model_name' 
    request.model_spec.signature_name = 'signature_name' 
    request.inputs['input_key'].CopyFrom(
     tf.contrib.util.make_tensor_proto(your_data, shape=data_size)) 
    result = stub.Predict(request, 10.0) # 10 secs timeout 
    print(result.output) 
相关问题