详解TensorFlow查看ckpt中变量的几种方法

 更新时间:2018年06月19日 09:30:20   作者:黑暗星球  
本篇文章主要介绍了详解TensorFlow查看ckpt中变量的几种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

查看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读取表格类型文件代码实例

    这篇文章主要介绍了Python读取表格类型文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • 如何使用ChatGPT搭建AI网站

    如何使用ChatGPT搭建AI网站

    ChatGPT是一种基于人工智能技术的聊天机器人,可以用于搭建AI网站。本文将介绍如何使用ChatGPT搭建AI网站,包括安装ChatGPT、创建聊天机器人、添加自定义功能等。
    2023-03-03
  • Python访问Redis的详细操作

    Python访问Redis的详细操作

    redis 提供两个类 Redis 和 StrictRedis, StrictRedis 用于实现大部分官方的命令,Redis 是 StrictRedis 的子类,用于向后兼用旧版本,接下来通过本文给大家分享Python访问Redis的详细操作,需要的朋友参考下吧
    2021-06-06
  • python实现web方式logview的方法

    python实现web方式logview的方法

    这篇文章主要介绍了python实现web方式logview的方法,涉及Python基于web模块操作Linux命令的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • python 抽象类的使用详解

    python 抽象类的使用详解

    这篇文章主要介绍了python 抽象类的使用详解,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-03-03
  • Python 学习笔记

    Python 学习笔记

    Python 基本概念等学习资料
    2008-12-12
  • Python图像处理Pillow库的基础使用

    Python图像处理Pillow库的基础使用

    Pillow库是Python中最流行的图像处理库之一,它是PIL(Python Imaging Library)的一个分支,提供了丰富的图像处理功能,使图像处理变得简单而高效,在这篇文章中,我们将探讨Pillow库的一些基本功能,感兴趣的朋友可以参考下
    2023-09-09
  • Python实现JavaBeans流程详解

    Python实现JavaBeans流程详解

    这篇文章主要介绍了Python实现JavaBeans流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-01-01
  • 教你怎么用python连接sql server

    教你怎么用python连接sql server

    今天教大家怎么用python连接sql server,文中有非常详细的代码示例,对正在学习python的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • python3 使用traceback定位异常实例

    python3 使用traceback定位异常实例

    这篇文章主要介绍了python3 使用traceback定位异常实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03

最新评论