基于tensorflow权重文件的解读


Posted in Python onMay 26, 2021

1.解读tensorflow权重文件,透过 tf.train.NewCheckpointReader函数。

2.reader.get_variable_to_shape_map()可以得到权重文件里面的tensor名称。

3.reader.get_tensor(key) 可以得到对应tensor的权重值。

基于tensorflow权重文件的解读

import tensorflow as tf
cpktFileName = r'.\models\resnet_v2_152.ckpt'
reader = tf.train.NewCheckpointReader(cpktFileName)
for key in sorted(reader.get_variable_to_shape_map()):
   
    if key.endswith('weights') or key.endswith('biases'):
        keySplits = key.split(r'/')
        print(key)
        print(reader.get_tensor(key))

resnet_v2_152权重 tensor name解读

第一,每个tensor name都以resnet_v2_152开头

第二,tensor name第二段为block,共有四个block。与网络架构有关。

第三,第三字段为unit,每个block里面unit数量不同。与网络架构有关。

第四,除了组后的平坦层,第四字段都为bottleneck_v2

第五,第五字段为‘conv1',‘conv2',‘conv3',‘shortcut'

第六,第六字段为‘weights' or ‘biases'

基于tensorflow权重文件的解读

补充:tensorflow模型的调用,权重查看

以vc版本的tensorpack说明

模型调用

每次运行,会有checkpoint、graph、model生成

1、其中,若文件夹已经有checkpoint,且写有自动掉用上次模型,可以在上次的基础上继续训练,否则重新生成,且不能调用之前的模型,即使已经存在

2、每次运行会重新生成graph,即使上次的已经存在,因此调用上次模型与文件夹中是否有graph无关

权重变量查看

import numpy as np
import tensorflow as tf
import sys
model = sys.argv[1]
tensor = sys.argv[2]
reader = tf.train.NewCheckpointReader(model)
all_variables = reader.get_variable_to_shape_map()
#reader = pywrap_tensorflow.NewCheckpointReader(ckpt_path)
#param_dict = reader.get_variable_to_shape_map()
for key, val in all_variables.items():
    try:
        print key, val
        #key是网络参数名,val是维度
    except:
        pass
w0 = reader.get_tensor(tensor)
np.save('con1d_w.npy',w0)
print(type(w0))
print(w0.shape)
print(w0[0])

文件内容

chekpoint—记录了保存的最新的checkpoint文件以及其它checkpoint文件列表。在inference时,可以通过修改这个文件,指定使用哪个model

基于tensorflow权重文件的解读

MyModel.meta文件保存的是图结构,meta文件是pb(protocol buffer)格式文件,包含变量、op、集合等。

ckpt文件是二进制文件,保存了所有的weights、biases、gradients等变量。在tensorflow 0.11之前,保存在.ckpt文件中。0.11后,通过两个文件保存,如:

MyModel.data-00000-of-00001
MyModel.index

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python静态方法实例
Jan 14 Python
Python下的twisted框架入门指引
Apr 15 Python
Python实现的Excel文件读写类
Jul 30 Python
python中文件变化监控示例(watchdog)
Oct 16 Python
python将txt等文件中的数据读为numpy数组的方法
Dec 22 Python
Python实例方法、类方法、静态方法的区别与作用详解
Mar 25 Python
python使用Qt界面以及逻辑实现方法
Jul 10 Python
python opencv捕获摄像头并显示内容的实现
Jul 11 Python
在Python 的线程中运行协程的方法
Feb 24 Python
详解python中的lambda与sorted函数
Sep 04 Python
python利用platform模块获取系统信息
Oct 09 Python
python3实现Dijkstra算法最短路径的实现
May 12 Python
解决Python字典查找报Keyerror的问题
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
tensorflow中的数据类型dtype用法说明
May 26 #Python
详解Python魔法方法之描述符类
May 26 #Python
使用tensorflow 实现反向传播求导
python基础学习之递归函数知识总结
TensorFlow的自动求导原理分析
You might like
无线电广播的开始
2002/01/30 无线电
使用PHPExcel导出Excel表
2018/09/08 PHP
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
javascripit实现密码强度检测代码分享
2013/12/12 Javascript
JavaScript中数据结构与算法(三):链表
2015/06/19 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
node操作mysql数据库实例详解
2017/03/17 Javascript
基于ajax和jsonp的原生封装(实例)
2017/10/16 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
[05:11]TI9战队采访——VIRTUSPRO
2019/08/22 DOTA
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
Python导入oracle数据的方法
2015/07/10 Python
Python操作MySQL数据库9个实用实例
2015/12/11 Python
详解字典树Trie结构及其Python代码实现
2016/06/03 Python
python实现类之间的方法互相调用
2018/04/29 Python
Python基础之函数的定义与使用示例
2019/03/23 Python
OpenCV图像颜色反转算法详解
2019/05/13 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
python多线程与多进程及其区别详解
2019/08/08 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
python装饰器使用实例详解
2019/12/14 Python
python爬虫添加请求头代码实例
2019/12/28 Python
通过 Python 和 OpenCV 实现目标数量监控
2020/01/05 Python
pandas之分组groupby()的使用整理与总结
2020/06/18 Python
详解h5页面在不同ios设备上的问题总结
2019/03/01 HTML / CSS
Chemist Warehouse官方海外旗舰店:澳洲第一连锁大药房
2017/08/25 全球购物
描述一下JVM加载class文件的原理机制
2013/12/08 面试题
应届生财务管理求职信
2013/11/06 职场文书
致跳远运动员广播稿
2014/02/11 职场文书
自我检讨报告
2015/01/28 职场文书
2015年度个人业务工作总结
2015/04/27 职场文书
2016大学生诚信考试承诺书
2016/03/25 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
Python 正则模块详情
2021/11/02 Python