基于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 相关文章推荐
Python3实现连接SQLite数据库的方法
Aug 23 Python
Python的pycurl包用法简介
Nov 13 Python
qpython3 读取安卓lastpass Cookies
Jun 19 Python
使用python装饰器计算函数运行时间的实例
Apr 21 Python
python utc datetime转换为时间戳的方法
Jan 15 Python
python用for循环求和的方法总结
Jul 08 Python
基于python进行抽样分布描述及实践详解
Sep 02 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
Python接口自动化判断元素原理解析
Feb 24 Python
python访问hdfs的操作
Jun 06 Python
matplotlib之多边形选区(PolygonSelector)的使用
Feb 24 Python
python实现网络五子棋
Apr 11 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
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
2014/05/04 PHP
PHP实现WebService的简单示例和实现步骤
2015/03/27 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
浅谈php使用curl模拟多线程发送请求
2019/03/08 PHP
用js+xml自动生成表格的东西
2006/12/21 Javascript
jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
2011/04/27 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
js如何判断用户是否是用微信浏览器
2014/06/05 Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
2014/06/20 Javascript
node.js中的fs.chown方法使用说明
2014/12/16 Javascript
JavaScript表格常用操作方法汇总
2015/04/15 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
微信小程序 地图定位简单实例
2016/10/14 Javascript
ztree简介_动力节点Java学院整理
2017/07/19 Javascript
jQuery第一次运行页面默认触发点击事件的实例
2018/01/10 jQuery
js实现简单分页导航栏效果
2019/06/28 Javascript
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
Python高效编程技巧
2013/01/07 Python
Python中unittest用法实例
2014/09/25 Python
使用Python实现下载网易云音乐的高清MV
2015/03/16 Python
在Linux下调试Python代码的各种方法
2015/04/17 Python
python面向对象入门教程之从代码复用开始(一)
2018/12/11 Python
python读取图片的几种方式及图像宽和高的存储顺序
2020/02/11 Python
Python threading.local代码实例及原理解析
2020/03/16 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
如何用PyPy让你的Python代码运行得更快
2020/12/02 Python
20佳惊艳的HTML5应用程序示例分享
2011/05/03 HTML / CSS
德国最大的服装、鞋子和配件在线商店之一:Outfits24
2019/07/23 全球购物
静心口服夜广告词
2014/03/20 职场文书
人民调解员培训方案
2014/06/05 职场文书
社区扶贫帮困工作总结
2015/05/20 职场文书
小学体育组工作总结2015
2015/07/21 职场文书
校友会致辞
2015/07/30 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
Nginx防盗链与服务优化配置的全过程
2022/01/18 Servers
css filter和getUserMedia的联合使用
2022/02/24 HTML / CSS