“他山之石,可以攻玉”,站在巨人的肩膀才能看得更高,走得更远。在科研的道路上,更需借助东风才能更快前行。为此,我们特别搜集整理了一些实用的代码链接,数据集,软件,编程技巧等,开辟“他山之石”专栏,助你乘风破浪,一路奋勇向前,敬请关注。
作者:知乎—卡西法地址:https://www.zhihu.com/people/kumonoue
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_grap
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_def.SerializeToString())
参考: https://github.com/tensorflow/tensorflow/blob/f5b9c2225584c79539ff6746b3417e8505443a4b/tensorflow/python/tools/freeze_graph.py
tf.train.Saver()
详细可