详解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网络编程学习笔记(一)
Jun 09 Python
python基于windows平台锁定键盘输入的方法
Mar 05 Python
python使用生成器实现可迭代对象
Mar 20 Python
Python3最长回文子串算法示例
Mar 04 Python
python自动化之Ansible的安装教程
Jun 13 Python
Python跳出多重循环的方法示例
Jul 03 Python
python装饰器使用实例详解
Dec 14 Python
利用python中的matplotlib打印混淆矩阵实例
Jun 16 Python
Python csv文件记录流程代码解析
Jul 16 Python
详解python程序中的多任务
Sep 16 Python
python两个list[]相加的实现方法
Sep 23 Python
Python第三方库安装缓慢的解决方法
Feb 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
PHP GD 图像处理组件的常用函数总结
2010/04/28 PHP
php微信公众平台开发类实例
2015/04/01 PHP
php微信公众平台配置接口开发程序
2016/09/22 PHP
laravel5.2实现区分前后台用户登录的方法
2017/01/11 PHP
THINKPHP截取中文字符串函数实例代码
2017/03/20 PHP
Smarty模板配置实例简析
2019/07/20 PHP
贴一个在Mozilla中常用的Javascript代码
2007/01/09 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
用js设置下拉框为只读的小技巧
2014/04/10 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
JavaScript中的toDateString()方法使用详解
2015/06/12 Javascript
基于jQuery实现的无刷新表格分页实例
2016/02/17 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
2016/08/16 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
vuejs父子组件通信的问题
2017/01/11 Javascript
jQuery实现最简单实用的分秒倒计时
2017/02/05 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
微信小程序获取手机系统信息的方法【附源码下载】
2017/12/07 Javascript
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
2020/03/10 Javascript
js实现简单的贪吃蛇游戏
2020/04/23 Javascript
python抓取某汽车网数据解析html存入excel示例
2013/12/04 Python
Python map和reduce函数用法示例
2015/02/26 Python
用Python的pandas框架操作Excel文件中的数据教程
2015/03/31 Python
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
Python中filter与lambda的结合使用详解
2019/12/24 Python
如何真正的了解python装饰器
2020/08/14 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
历史学专业推荐信
2013/11/06 职场文书
创业计划书的写作技巧及要点
2014/01/31 职场文书
个人校本研修方案
2014/05/26 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
鸡毛信观后感
2015/06/11 职场文书
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js
解析laravel使用workerman用户交互、服务器交互
2021/04/28 PHP