![0873df4cc20d846b994cca48f176a2be.png](https://img-blog.csdnimg.cn/img_convert/0873df4cc20d846b994cca48f176a2be.png)
GraphDef
GraphDef是Tensorflow中序列化的图结构。在tensorflow中,计算图被保存为Protobuf格式(pb)。pb可以只保存图的结构,也可以保存结构加权重。
SignatureDef
定义图结构输入输出的节点名称和属性,一般存储于.index文件中。
查看方法:
list(meta_graph.signature_def.items())
tf.saved_model
将动态图保存成权重(./variables)、计算图(keras_metadata.pb)、权重和计算图(saved_model.pb)三种文件。
# 保存
model = tf.saved_model.save(
obj, export_dir, signatures=None, options=None
)
# 读取
model= tf.saved_model.load(
export_dir, tags=None, options=None
)
# 推理
infer = model.signatures["serving_default"]
freeze_graph
from tensorflow.python.tools.freeze_graph import freeze_graph_with_def_protos
该函数将图和权重以常量的形式保存在一张静态图中(pb)。
其中的核心代码是:
output_graph_def = convert_variables_to_constants(session, input_graph_def, output_names)
output_graph = 'pb_model/model.pb' # 保存地址
with tf.gfile.GFile(output_graph, 'wb') as f:
f.write(output_graph_d