详解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基础教程之简单入门说明(变量和控制语言使用方法)
Mar 25 Python
用Python制作在地图上模拟瘟疫扩散的Gif图
Mar 31 Python
Python实现文件按照日期命名的方法
Jul 09 Python
查看Django和flask版本的方法
May 14 Python
python多任务及返回值的处理方法
Jan 22 Python
详解Python 4.0 预计推出的新功能
Jul 26 Python
python机器学习包mlxtend的安装和配置详解
Aug 21 Python
python图像处理模块Pillow的学习详解
Oct 09 Python
Python通过递归获取目录下指定文件代码实例
Nov 07 Python
浅析Django中关于session的使用
Dec 30 Python
解析PyCharm Python运行权限问题
Jan 08 Python
python中with用法讲解
Feb 07 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
php 远程关机操作的代码
2008/12/05 PHP
PHP 上传文件大小限制
2009/07/05 PHP
php模板函数 正则实现代码
2012/10/15 PHP
一个严格的PHP Session会话超时时间设置方法
2014/06/10 PHP
js获取单元格自定义属性值的代码(IE/Firefox)
2010/04/05 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
2013/11/11 Javascript
js给selected添加options的方法
2015/05/06 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
老生常谈 js中this的指向
2016/06/30 Javascript
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
JS 实现随机验证码功能
2017/02/15 Javascript
用js实现before和after伪类的样式修改的示例代码
2017/09/07 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
详解使用 Node.js 开发简单的脚手架工具
2018/06/08 Javascript
vue全局自定义指令-元素拖拽的实现代码
2019/04/14 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
ajax跨域访问遇到的问题及解决方案
2019/05/23 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
压缩包密码破解示例分享(类似典破解)
2014/01/17 Python
自己使用总结Python程序代码片段
2015/06/02 Python
Python语言实现机器学习的K-近邻算法
2015/06/11 Python
Python序列化基础知识(json/pickle)
2017/10/19 Python
python按行读取文件,去掉每行的换行符\n的实例
2018/04/19 Python
pandas将numpy数组写入到csv的实例
2018/07/04 Python
Python3匿名函数用法示例
2018/07/25 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
高中生毕业自我鉴定范文
2013/12/22 职场文书
行政助理的岗位职责
2014/02/18 职场文书
5.12护士节演讲稿
2014/04/30 职场文书
优秀团支部申报材料
2014/12/26 职场文书
2015年医院工作总结范文
2015/04/09 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书
党风廉政教育心得体会2016
2016/01/22 职场文书
Java的Object类的九种方法
2022/04/13 Java/Android