Tensorflow笔记之持久化原理及数据格式

本文详细介绍了Tensorflow模型持久化的过程,重点解析了saver.save时生成的4个文件及其作用,特别是MetaGraph的概念和元数据。通过MetaGraphDef Protocol Buffer和MetaInfoDef,Tensorflow能够记录计算图的节点信息和元数据。此外,还展示了如何使用export_meta_graph函数以json格式导出MetaGraph。
摘要由CSDN通过智能技术生成

   Tensorflow通过saver.save函数时,Tensorflow程序会自动生成4个文件,Tensorflow模型持久化就是通过这4个文件完成的。Tensorflow通过元图(MetaGraph)来记录计算图中节点的信息及运行计算图中红节点所需要的元数据。Tensorflow中元图是由MetaGraphDef Protocol Buffer定义的。其内容构成了Tensorflow持久时的第一个文件,下面是定义:

message MetaGraph{
MetaInfoDef meta_info_def=1;

GraphDef graph_def=2;
SaverDef saver_def=3;
map<string,CollectionDef> collection_def=4;
map<string,SignatureDef> signature_def=5;
repeated AssetFileDef asset_file_def=6;
}

 同时Tensorflow提供了export_meta_graph函数,这个函数支持以json格式导出MetaGraphDef Protocol Buffer,代码如下:

   

import tensorflow as tf
# 定义变量相加的计算
v1=tf.Variable(tf.constant(1.0,shape=[1]),name="v1")
v2=tf.Variable(tf.constant(2.0,shape=[1]),name="v2")
result=v1+v2
saver=tf.train.Saver()
#通过export_meta_graph函数导出Tensorflow计算图的元图,并保存为json格式。
saver.export_meta_graph("/path/to/model.ckpt.meda.json",as_text=True)

上述代码将计算图元图以json的格式导出并存储到model.ckpt.meta.json文件中。

meta_info_def属性

meta_info_def属性通过MetaInfoDef定义的,它记录了Tensorflow计算图中的元数据以及Tensorflow程序中所有使用到的运算信息,下面是MetaInfoDef ProtocolBuffer的定义:

message MetaInfoDef {
  string meta_graph_version=1;  #计算图版本号
  Oplist stripped_op_list=2; #记录了Tensorflow计算图上使用到的有所运算方法信息
  google.protobuf.Any any_info=3;
  repeated string tags=4;
  string tensorflow_version=5
  string tensorflow_git_version=6;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值