详解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实现拉钩网上的FizzBuzzWhizz问题示例
May 05 Python
python机器学习之神经网络(二)
Dec 20 Python
Python获取指定文件夹下的文件名的方法
Feb 06 Python
python+opencv识别图片中的圆形
Mar 25 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
Oct 28 Python
Django--权限Permissions的例子
Aug 28 Python
Python实现搜索算法的实例代码
Jan 02 Python
Python定时任务APScheduler原理及实例解析
May 30 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
Jul 07 Python
Python 实现将某一列设置为str类型
Jul 14 Python
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 Python
python创建字典及相关管理操作
Apr 13 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截取汉字乱码问题解决方法mb_substr函数的应用
2008/03/30 PHP
PHP循环获取GET和POST值的代码
2008/04/09 PHP
用PHP与XML联手进行网站编程代码实例
2008/07/10 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
2016/10/26 PHP
PHP实现的XML操作类【XML Library】
2016/12/29 PHP
Javascript学习笔记5 类和对象
2010/01/11 Javascript
xss文件页面内容读取(解决)
2010/11/28 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
jquery 显示*天*时*分*秒实现时间计时器
2014/05/07 Javascript
浅析JS运动
2015/12/28 Javascript
JavaScript继承模式粗探
2016/01/12 Javascript
利用D3.js实现最简单的柱状图示例代码
2016/12/09 Javascript
JavaScript中利用for循环遍历数组
2017/01/15 Javascript
jQuery实现frame之间互通的方法
2017/06/26 jQuery
React Native基础入门之调试React Native应用的一小步
2018/07/02 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
2018/10/11 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
2019/02/18 jQuery
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
[03:20]2015国际邀请赛全明星表演赛
2015/08/08 DOTA
pyqt和pyside开发图形化界面
2014/01/22 Python
浅析Python中的join()方法的使用
2015/05/19 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
Python rstrip()方法实例详解
2018/11/11 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
详解Python打包分发工具setuptools
2019/08/05 Python
Python箱型图处理离群点的例子
2019/12/09 Python
python打印n位数“水仙花数”(实例代码)
2019/12/25 Python
Mac中PyCharm配置Anaconda环境的方法
2020/03/04 Python
C&A巴西网上商店:时尚、衣服、手机和鞋子
2020/06/07 全球购物
Ibatis如何使用动态表名
2015/07/12 面试题
仪器仪表检测毕业生自荐信
2013/10/31 职场文书
yy婚礼司仪主持词
2014/03/14 职场文书
励志演讲稿范文
2014/04/29 职场文书
2014年师德师风工作总结
2014/11/25 职场文书
2015年化验员工作总结
2015/04/10 职场文书
2016年“6.26”禁毒宣传月系列活动总结
2016/04/05 职场文书