我是tensorflow的新手。我已经遵循tensorflow服务指令来为docker容器中的模型提供服务。我可以按照https://www.tensorflow.org/serving/的说明来提供mnist和inception模型。
服务模型保存在以下结构中:
functionThatResetsTheFileInput() {
let randomString = Math.random().toString(36);
this.setState({
theInputKey: randomString
});
}
render() {
return(
<div>
<input type="file"
key={this.state.theInputKey || '' } />
<button onClick={this.functionThatResetsTheFileInput()} />
</div>
)
}
问题:
我正在按照https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/#0的指示重新训练模型。
.
|-- 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
上面的命令创建了retrained_graph.pb以及retrained_label.txt和bottleneck目录。
如何以格式转换输出,以便通过Tensorflow服务器提供重新训练的模型?
如何提供预训练模型?
我查看了对象检测演示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包含
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
如何以格式转换上述文件,以便通过Tensorflow服务器提供预训练模型?
如何为通过Tensorflow服务器服务的自定义模型创建客户端?
我已按照http://fdahms.com/2017/03/05/tensorflow-serving-jvm-client/的说明创建自定义模型。该博客解释了如何创建自定义,通过tensorflow服务服务器和客户端来访问模型。创建客户端的过程不是很清楚。我想用Python和Java创建客户端。
是否有更好的示例或指南可帮助您了解为通过Tensorflow服务器提供的自定义模型创建客户端代码的过程。
答案 0 :(得分:1)
Tensorflow服务现在支持SavedModel格式。如果您有重新训练的模型,实际上您不需要使用对象检测。您可以做的是使用以前格式再训练模型中的保护程序到恢复会话,然后使用 SavedModelBuilder 再次导出它,其中保存模型可以生成服务可以服务的。 Here是我对类似问题的另一个答案。
对于客户端,您可以参考下面的代码,该代码也是服务/示例中的示例:
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)