(学习使用,仅供参考) 详细请参考:https://www.tensorflow.org/serving/serving_basic
这章教你怎样使用tf serving export出一个已经训练好的模型,并使用标准的tensorflow_model_server 将其服务出去。
这章需要两部分代码:
a python file:mnist_saverd_model.py,它用来训练和导出模型
一个modelsever二进制文件,这个modelserver可以找到新导出的模型并调用gRpc服务将其服务出去。
1.Train and Export tf Model
你可以在mnist_saverd_model.py中看到,训练部分和MNIST For ML Beginners tutorial中的相同,tf graph在sess中开始运行,其输入为x(input tensor[image]),其输出为y(output tensor[softmax score])
然后我们使用SavedModelBuilder module去export模型,SavedModelBuilder保存一个训练过模型的“snapshot”,以便在预测的时候可以被load。
from tensorflow.python.saved_model import builder as saved_model_builder
...
export_path_base = sys.argv[-1]
export_path = os.path.join(
compat.as_bytes(export_path_base),
compat.as_bytes(str(FLAGS.model_version)))
print 'Exporting trained model to', export_path
builder = saved_model_builder.SavedModelBuilder(export_path)
builder.add_meta_graph_and_variables(
sess, [tag_constants.SERVING],
signature_def_map={
'predict_images':
prediction_signature,
signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY:
classification_signature,
},
legacy_init_op=legacy_init_op)
builder.save()
SavedModelBuilder.__init__需要下面的参数:
1.export_path 导出的路径
SavedModelBuilder在没有目录的时候创建目录,在这个例子中,拼接了命令行参数和model_version得到真正的导出目录,FLAGS.model_version指定的模型的版本,下一次导出的版本一定要比上次导出的版本版本号大,每个版本的模型都被导出到同一指定目录下的不同子目录。
你可以使用builder添加子图和变量,用SavedModelBuilder.add_meta_graph_and_variables(),其具有以下参数:
1.sess 是一个tf session,它包含你导出的训练模型
2.tags 是一系列的tags,它们用来保存子图,在这个例子里,因为我们想在serving中使用图,我们使用已经在SavedModel tag 常量中定义好的serve tag.
3.signature_def_map指定 。。。,Signature 指定什么类型的模型将会被导出,并指定预测时的input/output
signature_def_map中的serving_default指定默认的serving signature,默认的serving signature def key,和其他的与signature相关的常量一起,被定义为SavedModel signature常量。
如果你想更容易的build signature defs
没有评论:
发表评论