5.4.2 TensorFlow模型持久化——持久化原理及数据格式

5.4.1小节介绍了当调用saver.save函数时,TensorFlow程序会自动生成3个文件。TensorFlow模型的持久化就是通过这3个文件完成的。这一小节将详细介绍这3个文件中保存的内容以及数据格式。在具体介绍每一个文件之前,先简单回顾一下第3章中介绍过得TensorFlow的一些基本概念。TensorFlow是一个通过图的形式来表述计算的编程系统,TensorFlow程序中的所有计算都会被表达为计算图上的节点。TensorFlow通过元图(MetaGraph)来记录图中节点的信息以及运行计算图中节点所需要的元数据。TensorFlow中元图是由MetaGraphDef Protocol Buffer定义的。MetaGraphDef中的内容就构成了TensorFlow持久化时的第一个文件。以下代码给出了MetaGraphDef类型的定义。

message MetaGraphDef{
	MetaInfoDef meta_info_def=1;

	GraphDef graph_def=2;
	SaverDef saver_def=3;
	map<string,CollectionDef>collection_def=4;
	map<string,SignatureDef>sigature_def=5;
	}

从上面代码中可以看到,元图中主要记录了5类信息。下面的篇幅将结合5.4.1小节中变量相加样例的持久化结果,逐一介绍MetaGraphDef类型的每一个属性中存储的信息。保存MetaGraphDef信息的文件默认以.meta为后缀,在5.4.1小节的样例中,文件model.ckpt.meta中存储的就是元图的数据。直接运行5.4.1小节的样例得到的是一个二进制文件,无法直接查看。为了方便调试,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.meta.json",as_text=True)

通过上面给出的代码,可以将5.4.1小节中的计算图元图以json的格式导出并存储在model.ckpt.meta.json文件中。下文将结合model.ckpt.meta.json文件具体介绍TensorFlow元图中存储的信息。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值