详解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实现MySQL操作的方法小结【安装,连接,增删改查等】
Jul 12 Python
Python Nose框架编写测试用例方法
Oct 26 Python
python-opencv 将连续图片写成视频格式的方法
Jan 08 Python
Python的条件表达式和lambda表达式实例
Jan 31 Python
详解Python安装tesserocr遇到的各种问题及解决办法
Mar 07 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
Jun 25 Python
django中使用事务及接入支付宝支付功能
Sep 15 Python
解决Python3下map函数的显示问题
Dec 04 Python
python如何获取apk的packagename和activity
Jan 10 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
Feb 27 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
Mar 30 Python
Django缓存Cache使用详解
Nov 30 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 dirname()与__FILE__常量的应用
2013/06/24 PHP
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
jquery ajax实现下拉框三级无刷新联动,且保存保持选中值状态
2013/10/29 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
2017/06/13 Javascript
Vue中父组件向子组件通信的方法
2017/07/11 Javascript
微信小程序tabBar底部导航中文注解api详解
2017/08/16 Javascript
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
jquery将信息遍历到界面上实例代码
2020/01/21 jQuery
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
Python随机生成彩票号码的方法
2015/03/05 Python
Python3实现从指定路径查找文件的方法
2015/05/22 Python
python解析基于xml格式的日志文件
2017/02/25 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
python3结合openpyxl库实现excel操作的实例代码
2018/09/11 Python
python 求一个列表中所有元素的乘积实例
2019/06/11 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
Python实现决策树并且使用Graphviz可视化的例子
2019/08/09 Python
python+tkinter实现学生管理系统
2019/08/20 Python
Matplotlib使用Cursor实现UI定位的示例代码
2020/03/12 Python
python 实现PIL模块在图片画线写字
2020/05/16 Python
css3针对移动端卡顿问题的解决(动画性能优化)
2020/02/14 HTML / CSS
Myprotein法国官网:欧洲第一运动营养品牌
2019/03/26 全球购物
MySQL面试题
2014/01/12 面试题
商务英语毕业生自荐信范文
2013/11/08 职场文书
企业为何需要商业计划书
2013/12/26 职场文书
优秀民警事迹材料
2014/01/29 职场文书
2015年世界艾滋病日活动总结
2015/03/24 职场文书
实习单位鉴定意见
2015/06/04 职场文书
初一数学教学反思
2016/02/17 职场文书