详解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 相关文章推荐
ansible作为python模块库使用的方法实例
Jan 17 Python
python3使用pyqt5制作一个超简单浏览器的实例
Oct 19 Python
基于Django的python验证码(实例讲解)
Oct 23 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
Jan 17 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
Jul 10 Python
Python3内置模块random随机方法小结
Jul 13 Python
pytorch 实现打印模型的参数值
Dec 30 Python
python 连续不等式语法糖实例
Apr 15 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
Jul 14 Python
如何在 Matplotlib 中更改绘图背景的实现
Nov 26 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
Feb 25 Python
python pygame 开发五子棋双人对弈
May 02 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
Windows7下PHP开发环境安装配置图文方法
2010/05/20 PHP
PHP自带函数给数字或字符串自动补齐位数
2014/07/29 PHP
基于PHP的简单采集数据入库程序
2014/07/30 PHP
PHP导出Excel实例讲解
2016/01/24 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
PHP读取Excel类文件
2017/05/15 PHP
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
2007/05/14 Javascript
from 表单提交返回值用post或者是get方法实现
2013/08/21 Javascript
剖析Node.js异步编程中的回调与代码设计模式
2016/02/16 Javascript
JS简单实现禁止访问某个页面的方法
2016/09/13 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
JavaScript 用fetch 实现异步下载文件功能
2017/07/21 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
Vue自定义toast组件的实例代码
2018/08/15 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
2019/12/29 Javascript
Vue 数据响应式相关总结
2021/01/28 Vue.js
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
2016/09/18 Python
python numpy 部分排序 寻找最大的前几个数的方法
2018/06/27 Python
这可能是最好玩的python GUI入门实例(推荐)
2019/07/19 Python
详解python pandas 分组统计的方法
2019/07/30 Python
python之列表推导式的用法
2019/11/29 Python
python将unicode和str互相转化的实现
2020/05/11 Python
python如何用matplotlib创建三维图表
2021/01/26 Python
澳大利亚最大的女装零售商:Millers
2017/09/10 全球购物
女孩每月服装订阅盒:kidpik
2019/04/17 全球购物
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
使用索引(Index)有哪些需要考虑的因素
2016/10/19 面试题
抽象类和接口的区别
2012/09/19 面试题
前台文员岗位职责
2013/12/28 职场文书
公司承诺书怎么写
2014/05/24 职场文书
党员民主生活会个人整改措施材料
2014/09/16 职场文书
官僚主义现象查摆问题整改措施
2014/10/04 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
MySQL令人大跌眼镜的隐式转换
2021/08/23 MySQL
试用1103暨1103、1101同门大比武 [ DAIWEI ]
2022/04/05 无线电
MySQL添加索引特点及优化问题
2022/07/23 MySQL