基于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查看目录中的文件示例详解
Aug 28 Python
python实现弹窗祝福效果
Apr 07 Python
PyTorch搭建一维线性回归模型(二)
May 22 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
Aug 10 Python
对python中UDP,socket的使用详解
Aug 22 Python
在Python中等距取出一个数组其中n个数的实现方式
Nov 27 Python
python3 使用traceback定位异常实例
Mar 09 Python
在python里使用await关键字来等另外一个协程的实例
May 04 Python
Python astype(np.float)函数使用方法解析
Jun 08 Python
Pytorch上下采样函数--interpolate用法
Jul 07 Python
python logging模块的使用
Sep 07 Python
Lombok插件安装(IDEA)及配置jar包使用详解
Nov 04 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
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
2006/12/06 PHP
PHP Class&Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
JavaScript入门学习书籍推荐
2008/06/12 Javascript
jquery 3D球状导航的文章分类
2010/07/06 Javascript
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
背景图跟随鼠标移动的Mootools插件实现代码
2011/12/12 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
js漂浮广告实现代码
2015/08/15 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
2016/08/02 Javascript
Angularjs CURD 详解及实例代码
2016/09/14 Javascript
关于微信jssdk实现多图片上传的一点心得分享
2016/12/13 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
JavaScript多态与封装实例分析
2018/07/27 Javascript
JavaScript插入排序算法原理与实现方法示例
2018/08/06 Javascript
vuex管理状态仓库使用详解
2020/07/29 Javascript
如何使用jQuery操作Cookies方法解析
2020/09/08 jQuery
[03:45]Newbee战队出征西雅图 决战2016国际邀请赛
2016/08/02 DOTA
python 队列详解及实例代码
2016/10/18 Python
Python执行时间的计算方法小结
2017/03/17 Python
python通过微信发送邮件实现电脑关机
2018/06/20 Python
python实现任意位置文件分割的实例
2018/12/14 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
Wolford法国官网:奥地利奢侈内衣品牌
2020/08/11 全球购物
市场营销求职信范文
2014/02/21 职场文书
销售顾问岗位职责
2014/02/25 职场文书
高中军训的心得体会
2014/09/01 职场文书
生日赠语
2015/06/23 职场文书
检讨书怎么写?
2019/06/21 职场文书
Nginx工作原理和优化总结。
2021/04/02 Servers
Java实现多线程聊天室
2021/06/26 Java/Android
Python语法学习之进程的创建与常用方法详解
2022/04/08 Python
MySQL 语句执行顺序举例解析
2022/06/05 MySQL
Redis实现短信验证码登录的示例代码
2022/06/14 Redis