详解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解析html开发库pyquery使用方法
Feb 07 Python
python socket 超时设置 errno 10054
Jul 01 Python
python字典键值对的添加和遍历方法
Sep 11 Python
python 字典中取值的两种方法小结
Aug 02 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
Jun 21 Python
Python hashlib模块加密过程解析
Nov 05 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
May 09 Python
如何使用python记录室友的抖音在线时间
Jun 29 Python
Python用K-means聚类算法进行客户分群的实现
Aug 23 Python
Python生成pdf目录书签的实例方法
Oct 29 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
Dec 24 Python
python 如何用map()函数创建多线程任务
Apr 07 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
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
如何解决PHP获取不到SESSION信息之一般情况
2019/10/10 PHP
php中用unset销毁变量并释放内存
2020/05/10 PHP
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
js弹出层永远居中实现思路及代码
2013/11/29 Javascript
JQuery Tips相关(1)----关于$.Ready()
2014/08/14 Javascript
Javascript中的call()方法介绍
2015/03/15 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
2015/08/21 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
跟我学习javascript的for循环和for...in循环
2015/11/18 Javascript
AngularJS中的Directive实现延迟加载
2016/01/25 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
2017/01/18 Javascript
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
React如何避免重渲染
2018/04/10 Javascript
JavaScript对象拷贝与赋值操作实例分析
2018/12/10 Javascript
js变量值传到php过程详解 将php解析成数据
2019/06/26 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
vue实现的多页面项目如何优化打包的步骤详解
2020/07/19 Javascript
python使用arp欺骗伪造网关的方法
2015/04/24 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
python工具快速为音视频自动生成字幕(使用说明)
2021/01/27 Python
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
VSCode 自定义html5模板的实现
2019/12/05 HTML / CSS
英国露营设备和户外服装购物网站:Simply Hike
2019/05/05 全球购物
服务员自我评价
2014/01/25 职场文书
教师校本培训方案
2014/02/26 职场文书
介绍长城的导游词
2015/01/30 职场文书
酒店厨房管理制度
2015/08/06 职场文书
初中物理教学反思
2016/02/19 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书