详解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自动化测试之setUp与tearDown实例
Sep 28 Python
Python实现压缩与解压gzip大文件的方法
Sep 18 Python
Python使用PDFMiner解析PDF代码实例
Mar 27 Python
利用python爬取软考试题之ip自动代理
Mar 28 Python
Python模拟登陆实现代码
Jun 14 Python
Python自定义装饰器原理与用法实例分析
Jul 16 Python
python 多线程串行和并行的实例
Feb 22 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 Python
关于Python字符串显示u...的解决方式
Mar 06 Python
解决pycharm不能自动补全第三方库的函数和属性问题
Mar 12 Python
PyQt5 控件字体样式等设置的实现
May 13 Python
python 如何获取页面所有a标签下href的值
May 06 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
探讨如何在php168_cms中提取验证码
2013/06/08 PHP
php实现文件下载实例分享
2014/06/02 PHP
怎样搭建PHP开发环境
2015/07/28 PHP
zend framework中使用memcache的方法
2016/03/04 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
2019/06/14 PHP
容易被忽略的JS脚本特性
2011/09/13 Javascript
js string 转 int 注意的问题小结
2013/08/15 Javascript
基于jquery和svg实现超炫酷的动画特效
2014/12/09 Javascript
jQuery 处理页面的事件详解
2015/01/20 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
jquery实现带缩略图的可定制高度画廊效果(5种)
2015/08/28 Javascript
Jquery Easyui分割按钮组件SplitButton使用详解(17)
2016/12/18 Javascript
canvas时钟效果
2017/02/16 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
jQuery Position方法使用和兼容性
2017/08/23 jQuery
初探js和简单隐藏效果的实例
2017/11/23 Javascript
[50:11]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第三场
2018/04/09 DOTA
python网络编程学习笔记(10):webpy框架
2014/06/09 Python
python实现朴素贝叶斯分类器
2018/03/28 Python
解决python字典对值(值为列表)赋值出现重复的问题
2019/01/20 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
浅谈python的输入输出,注释,基本数据类型
2019/04/02 Python
在python中做正态性检验示例
2019/12/09 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
Python 解析xml文件的示例
2020/09/29 Python
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
建设投标担保书
2014/05/13 职场文书
群众路线个人自我剖析材料
2014/10/07 职场文书
简历中自我评价范文
2015/03/11 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
药房管理制度范本
2015/08/06 职场文书
写给消防战士们的一封慰问信
2019/10/07 职场文书
用JS实现飞机大战小游戏
2021/06/09 Javascript
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python
Python语法学习之进程的创建与常用方法详解
2022/04/08 Python
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript