基于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 + openpyxl处理excel2007文档思路以及心得
Jul 14 Python
介绍Python中几个常用的类方法
Apr 08 Python
使用Python来编写HTTP服务器的超级指南
Feb 18 Python
Python的网络编程库Gevent的安装及使用技巧
Jun 24 Python
python获取文件真实链接的方法,针对于302返回码
May 14 Python
利用python如何处理百万条数据(适用java新手)
Jun 06 Python
Python+pyplot绘制带文本标注的柱状图方法
Jul 08 Python
wxPython实现列表增删改查功能
Nov 19 Python
PyCharm下载和安装详细步骤
Dec 17 Python
Scrapy框架基本命令与settings.py设置
Feb 06 Python
JAVA及PYTHON质数计算代码对比解析
Jun 10 Python
windows10在visual studio2019下配置使用openCV4.3.0
Jul 14 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 array_multisort() 函数的深入解析
2013/06/20 PHP
php使用scandir()函数扫描指定目录下所有文件示例
2019/06/08 PHP
JavaScript 面向对象之命名空间
2010/05/04 Javascript
JavaScript几种形式的树结构菜单
2010/05/10 Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
JS小功能(button选择颜色)简单实例
2013/11/29 Javascript
招聘网站基于jQuery实现自动刷新简历
2015/05/10 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
2015/08/21 Javascript
js实现StringBuffer的简单实例
2016/09/02 Javascript
javascript基本数据类型及类型检测常用方法小结
2016/12/14 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
2019/03/13 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
vue实现的多页面项目如何优化打包的步骤详解
2020/07/19 Javascript
Python Tkinter基础控件用法
2014/09/03 Python
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
2016/01/20 Python
详解Python中的相对导入和绝对导入
2017/01/06 Python
Python爬取数据并写入MySQL数据库的实例
2018/06/21 Python
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
2019/04/03 Python
python itchat实现调用微信接口的第三方模块方法
2019/06/11 Python
python3实现弹弹球小游戏
2019/11/25 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
2021/03/03 Python
澳大利亚女士时装在线:Rockmans
2018/09/26 全球购物
化学相关工作求职信
2013/10/02 职场文书
医学实习生自我鉴定
2013/12/12 职场文书
简历自我评价怎么写好呢?
2014/01/04 职场文书
运动会解说词50字
2014/01/18 职场文书
毕业自我鉴定书
2014/03/24 职场文书
快餐公司创业计划书
2014/04/29 职场文书
副科竞争上岗演讲稿
2014/05/12 职场文书
预备党员期盼十八届四中全会召开思想汇报
2014/10/17 职场文书
党员评议个人总结
2014/10/20 职场文书
先进班组事迹材料
2014/12/25 职场文书
您对思维方式了解多少?
2019/12/09 职场文书