![328e317e01647fed6a30c075465aa436.png](https://img-blog.csdnimg.cn/img_convert/328e317e01647fed6a30c075465aa436.png)
GraphDef
GraphDef是Tensorflow中序列化的图结构。在tensorflow中,计算图被保存为Protobuf格式(pb)。pb可以只保存图的结构,也可以保存结构加权重。
SignatureDef
定义图结构输入输出的节点名称和属性。
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)。
参考:
https://github.com/tensorflow/tensorflow/blob/f5b9c2225584c79539ff6746b3417e8505443a4b/tensorflow/python/tools/freeze_graph.pygithub.comtf.train.Saver()
详细可参考:
小文:[深度学习] TensorFlow中模型的freeze_graphzhuanlan.zhihu.com![62fc17f1a697b942d3a08b2c6994ffbb.png](https://img-blog.csdnimg.cn/img_convert/62fc17f1a697b942d3a08b2c6994ffbb.png)
# 保存断点
saver = tf.train.Saver()
saver.save()
# 加载断点
saver.restore()
- .data文件保存了当前参数值
- .index文件保存了当前参数名
- .meta文件保存了当前图结构
- .events文件是给可视化工具tensorboard使用。
- .pbtxt文件是以字符串存储的计算图
tf.train.CheckpointManager()
CheckpointManager是一个管理断点的工具,是Saver更高级的API,类似于tensorflow.keras.callbacks中的Checkpoint类。CheckpointManager可以设置自动存点间隔步数、最大断点数、自动存点间隔时间等参数
其中,最新的断点文件名以字符串形式储存在checkpoint文件中。
可参考:
tf.train.CheckpointManager | TensorFlow Core v2.3.1tensorflow.google.cn# 设置断点
checkpoint = tf.train.Checkpoint(optimizer=optimizer, model=model)
manager = tf.train.CheckpointManager(
checkpoint, directory="/tmp/model", max_to_keep=5)
# 加载最新的断点
status = checkpoint.restore(manager.latest_checkpoint)
# 保存断点
while True:
# train
manager.save()