机器学习PAI怎么把frozen graph保存成 tf serving呢?就是执行完optimize_for_inference得到frozen_graph_def ,怎么再保存成model = tf.saved_model.load可以直接加载的模型
机器学习PAI怎么把frozen graph保存成 tf serving呢?就是执行完optimiz[阿里云机器学习PAI]
「点点赞赏,手留余香」
还没有人赞赏,快来当第一个赞赏的人吧!
机器学习PAI怎么把frozen graph保存成 tf serving呢?就是执行完optimize_for_inference得到frozen_graph_def ,怎么再保存成model = tf.saved_model.load可以直接加载的模型
第一种,你可以直接使用得到的frozen graph推理;可以参考,可能需要改改:import tensorflow as tf
加载Frozen Graph
graph_def = tf.compat.v1.GraphDef()
with tf.io.gfile.GFile(“/path/to/frozen/graph.pb”, “rb”) as f:
graph_def.ParseFromString(f.read())
将GraphDef导入到默认图中
with tf.compat.v1.Session() as sess:
tf.import_graph_def(graph_def)
# 获取输入和输出的Tensorinput_tensor = sess.graph.get_tensor_by_name("input:0")output_tensor = sess.graph.get_tensor_by_name("output:0")# 执行推理output = sess.run(output_tensor, feed_dict={input_tensor: [[1.0, 2.0, 3.0, 4.0]]})第二种;需要将frozen graph转换成saved model;可以参考可能需要修改:import tensorflow as tf
加载经过优化的GraphDef
optimized_graph_def = tf.GraphDef()
with tf.io.gfile.GFile(“/path/to/optimized/graph.pb”, “rb”) as f:
optimized_graph_def.ParseFromString(f.read())
创建SavedModel Builder
builder = tf.compat.v1.saved_model.builder.SavedModelBuilder(“/path/to/saved/model”)
定义输入和输出格式
inputs = {
“input”: input_tensor_info
}
outputs = {
“output”: output_tensor_info
}
创建模型签名
signature = tf.compat.v1.saved_model.signature_def_utils.build_signature_def(
inputs=inputs,
outputs=outputs,
method_name=tf.compat.v1.saved_model.signature_constants.PREDICT_METHOD_NAME)
with tf.compat.v1.Session() as sess:
# 导入GraphDeftf.import_graph_def(optimized_graph_def)# 添加图形和变量builder.add_meta_graph_and_variables( sess, [tf.compat.v1.saved_model.tag_constants.SERVING], signature_def_map={ tf.compat.v1.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY: signature })保存模型
builder.save()7月11日 21:23,此回答整理自钉群“【EasyRec】推荐算法交流群”