详解TensorFlow查看ckpt中变量的几种方法


Posted in Python onJune 19, 2018

查看TensorFlow中checkpoint内变量的几种方法

查看ckpt中变量的方法有三种:

  1. 在有model的情况下,使用tf.train.Saver进行restore
  2. 使用tf.train.NewCheckpointReader直接读取ckpt文件,这种方法不需要model。
  3. 使用tools里的freeze_graph来读取ckpt

注意:

  1. 如果模型保存为.ckpt的文件,则使用该文件就可以查看.ckpt文件里的变量。ckpt路径为 model.ckpt
  2. 如果模型保存为.ckpt-xxx-data (图结构)、.ckpt-xxx.index (参数名)、.ckpt-xxx-meta (参数值)文件,则需要同时拥有这三个文件才行。并且ckpt的路径为 model.ckpt-xxx

1. 基于model来读取ckpt文件里的变量

1.首先建立model
2.从ckpt中恢复变量

with tf.Graph().as_default() as g: 
  #建立model
  images, labels = cifar10.inputs(eval_data=eval_data) 
  logits = cifar10.inference(images) 
  top_k_op = tf.nn.in_top_k(logits, labels, 1) 
  #从ckpt中恢复变量
  sess = tf.Session()
  saver = tf.train.Saver() #saver = tf.train.Saver(...variables...) # 恢复部分变量时,只需要在Saver里指定要恢复的变量
  save_path = 'ckpt的路径'
  saver.restore(sess, save_path) # 从ckpt中恢复变量

注意:基于model来读取ckpt中变量时,model和ckpt必须匹配。

2. 使用tf.train.NewCheckpointReader直接读取ckpt文件里的变量,使用tools.inspect_checkpoint里的print_tensors_in_checkpoint_file函数打印ckpt里的东西

#使用NewCheckpointReader来读取ckpt里的变量
from tensorflow.python import pywrap_tensorflow
checkpoint_path = os.path.join(model_dir, "model.ckpt")
reader = pywrap_tensorflow.NewCheckpointReader(checkpoint_path) #tf.train.NewCheckpointReader
var_to_shape_map = reader.get_variable_to_shape_map()
for key in var_to_shape_map:
  print("tensor_name: ", key)
  #print(reader.get_tensor(key))
#使用print_tensors_in_checkpoint_file打印ckpt里的内容
from tensorflow.python.tools.inspect_checkpoint import print_tensors_in_checkpoint_file

print_tensors_in_checkpoint_file(file_name, #ckpt文件名字
                 tensor_name, # 如果为None,则默认为ckpt里的所有变量
                 all_tensors, # bool 是否打印所有的tensor,这里打印出的是tensor的值,一般不推荐这里设置为False
                 all_tensor_names) # bool 是否打印所有的tensor的name
#上面的打印ckpt的内部使用的是pywrap_tensorflow.NewCheckpointReader所以,掌握NewCheckpointReader才是王道

3.使用tools里的freeze_graph来读取ckpt

from tensorflow.python.tools import freeze_graph

freeze_graph(input_graph, #=some_graph_def.pb
       input_saver, 
       input_binary, 
       input_checkpoint, #=model.ckpt
       output_node_names, #=softmax
       restore_op_name, 
       filename_tensor_name, 
       output_graph, #='./tmp/frozen_graph.pb'
       clear_devices, 
       initializer_nodes, 
       variable_names_whitelist='', 
       variable_names_blacklist='', 
       input_meta_graph=None, 
       input_saved_model_dir=None, 
       saved_model_tags='serve', 
       checkpoint_version=2)
#freeze_graph_test.py讲述了怎么使用freeze_grapg。

使用freeze_graph可以将图和ckpt进行合并。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python Deque 模块使用详解
Jul 04 Python
以windows service方式运行Python程序的方法
Jun 03 Python
实用自动化运维Python脚本分享
Jun 04 Python
python针对不定分隔符切割提取字符串的方法
Oct 26 Python
详解python Todo清单实战
Nov 01 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
Jan 08 Python
python判断字符串或者集合是否为空的实例
Jan 23 Python
python os.path.isfile 的使用误区详解
Nov 29 Python
python动态文本进度条的实例代码
Jan 22 Python
TensorFLow 变量命名空间实例
Feb 11 Python
详解用Python爬虫获取百度企业信用中企业基本信息
Jul 02 Python
Django+RestFramework API接口及接口文档并返回json数据操作
Jul 12 Python
TensorFlow 滑动平均的示例代码
Jun 19 #Python
python3个性签名设计实现代码
Jun 19 #Python
TensorFlow 模型载入方法汇总(小结)
Jun 19 #Python
python3爬虫之设计签名小程序
Jun 19 #Python
Python GUI Tkinter简单实现个性签名设计
Jun 19 #Python
TensorFlow数据输入的方法示例
Jun 19 #Python
深入分析python中整型不会溢出问题
Jun 18 #Python
You might like
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
2016/03/18 PHP
PHP自动生成缩略图函数的源码示例
2019/03/18 PHP
表单提交时自动复制内容到剪贴板的js代码
2007/03/16 Javascript
javascript中的array数组使用技巧
2010/01/31 Javascript
jquery 选项卡效果 新手代码
2011/07/08 Javascript
Javascript继承机制的设计思想分享
2011/08/28 Javascript
有关javascript的性能优化 (repaint和reflow)
2013/04/12 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
2015/10/21 Javascript
javascript绘制漂亮的心型线效果完整实例
2016/02/02 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
[04:44]显微镜下的DOTA2第二期——你所没有注意到的细节
2014/06/20 DOTA
pygame播放音乐的方法
2015/05/19 Python
python获取指定时间差的时间实例详解
2017/04/11 Python
在cmd中查看python的安装路径方法
2019/07/03 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
Python装饰器用法与知识点小结
2020/03/09 Python
Python PIL库图片灰化处理
2020/04/07 Python
巴西男士胡须和头发护理产品商店:Beard
2017/11/13 全球购物
俄罗斯品牌服装在线商店:VIPAVENUE
2020/08/10 全球购物
营销团队口号
2014/06/06 职场文书
科技节口号
2014/06/19 职场文书
2014年生活老师工作总结
2014/12/23 职场文书
2015年五一劳动节慰问信
2015/03/23 职场文书
跳高加油稿
2015/07/21 职场文书
长辈生日祝福语大全(72句)
2019/08/09 职场文书
苹果发布了MagSafe固件更新,可以不外接电源实现最高7.5W充电
2022/04/21 数码科技
python数据处理之Pandas类型转换
2022/04/28 Python
JavaScript圣杯布局与双飞翼布局实现案例详解
2022/08/05 Javascript