详解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中列表、字典、元组、集合数据结构整理
Nov 20 Python
Python脚本实现下载合并SAE日志
Feb 10 Python
Python实现简单多线程任务队列
Feb 27 Python
Python导入模块时遇到的错误分析
Aug 30 Python
Python爬虫番外篇之Cookie和Session详解
Dec 27 Python
使用Python进行QQ批量登录的实例代码
Jun 11 Python
利用Python进行数据可视化常见的9种方法!超实用!
Jul 11 Python
python对XML文件的操作实现代码
Mar 27 Python
pygame实现弹球游戏
Apr 14 Python
Python自动巡检H3C交换机实现过程解析
Aug 14 Python
Python实现中英文全文搜索的示例
Dec 04 Python
Python上下文管理器Content Manager
Jun 26 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
如何开始收听短波广播
2021/03/01 无线电
19个超实用的PHP代码片段
2014/03/14 PHP
使用php批量删除数据库下所有前缀为prefix_的表
2014/06/09 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
JQuery 操作select标签实现代码
2010/05/14 Javascript
js变量、作用域及内存详解
2014/09/23 Javascript
javascript实现自动填写表单实例简析
2015/12/02 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
bootstrap输入框组代码分享
2016/06/07 Javascript
js removeChild 方法深入理解
2016/08/16 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
2016/08/29 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
node.js爬虫框架node-crawler初体验
2020/10/29 Javascript
JavaScript实现鼠标移入随机变换颜色
2020/11/24 Javascript
详解Vite的新体验
2021/02/22 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
Python使用Mechanize模块编写爬虫的要点解析
2016/03/31 Python
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
详解python 3.6 安装json 模块(simplejson)
2019/04/02 Python
python图形工具turtle绘制国际象棋棋盘
2019/05/23 Python
python实现证件照换底功能
2019/08/20 Python
基于Python实现扑克牌面试题
2019/12/11 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
2019/12/12 Python
Python使用pdb调试代码的技巧
2020/05/03 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
2020/05/20 Python
全球最大最受欢迎的旅游社区:Tripadvisor
2017/11/03 全球购物
欧洲领先的技术商店:eibmarkt.com
2019/05/10 全球购物
高中生自我鉴定范文
2013/10/30 职场文书
行政人事岗位职责
2014/03/17 职场文书
应用外语系自荐信
2014/06/26 职场文书
2015年六一儿童节活动方案
2015/05/05 职场文书
消防安全月活动总结
2015/05/08 职场文书
小程序实现侧滑删除功能
2022/06/25 Javascript