详解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中的线程进行网络编程的入门教程
Apr 15 Python
pymongo给mongodb创建索引的简单实现方法
May 06 Python
windows系统下Python环境搭建教程
Mar 28 Python
详解Python中 sys.argv[]的用法简明解释
Dec 20 Python
简单实现python画圆功能
Jan 25 Python
django使用xlwt导出excel文件实例代码
Feb 06 Python
python将每个单词按空格分开并保存到文件中
Mar 19 Python
详解Python爬取并下载《电影天堂》3千多部电影
Apr 26 Python
Python 解码Base64 得到码流格式文本实例
Jan 09 Python
python安装dlib库报错问题及解决方法
Mar 16 Python
五分钟学会怎么用python做一个简单的贪吃蛇
Jan 12 Python
python+pyhyper实现识别图片中的车牌号思路详解
Dec 24 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
GBK的页面输出JSON格式的php函数
2010/02/16 PHP
PHP的autoload机制的实现解析
2012/09/15 PHP
php生成N个不重复的随机数实例
2013/11/12 PHP
php中Ctype函数用法详解
2014/12/09 PHP
php实现36进制与10进制转换功能示例
2017/01/10 PHP
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
JS过滤url参数特殊字符的实现方法
2013/12/24 Javascript
js toFixed()方法的重写实现精度的统一
2014/03/06 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
JavaScript中操作Mysql数据库实例
2015/04/02 Javascript
谈谈JavaScript中function多重理解
2015/08/28 Javascript
Move.js入门
2017/02/08 Javascript
jquery仿苹果的时间/日期选择效果
2017/03/08 Javascript
浅析JavaScript中的平稳退化(graceful degradation)
2017/07/24 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
Vue验证码60秒倒计时功能简单实例代码
2018/06/22 Javascript
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
如何自定义微信小程序tabbar上边框的颜色
2019/07/09 Javascript
vue-quill-editor的使用及个性化定制操作
2020/08/04 Javascript
[49:42]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第一局
2016/03/04 DOTA
python合并文本文件示例
2014/02/07 Python
用Python中的wxPython实现最基本的浏览器功能
2015/04/14 Python
Python爬虫之xlml解析库(全面了解)
2017/08/08 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
Crocs美国官方网站:卡骆驰洞洞鞋
2017/08/04 全球购物
巴西葡萄酒商店:Divvino
2020/02/22 全球购物
人力资源行政经理自我评价
2013/10/23 职场文书
服务员岗位职责
2014/01/29 职场文书
语文高效课堂实施方案
2014/05/03 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
学法用法心得体会(2016推荐篇)
2016/01/21 职场文书
3招让你摆脱即兴讲话冷场尴尬
2019/08/08 职场文书
Python实战之实现康威生命游戏
2021/04/26 Python
golang使用map实现去除重复数组
2022/04/14 Golang