基于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批量同步web服务器代码核心程序
Sep 01 Python
利用Python实现简单的相似图片搜索的教程
Apr 23 Python
利用Python破解斗地主残局详解
Jun 30 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
Feb 18 Python
python使用Matplotlib画条形图
Mar 25 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 Python
python实现浪漫的烟花秀
Jan 30 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
Sep 26 Python
python取均匀不重复的随机数方式
Nov 27 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
Apr 22 Python
python Zmail模块简介与使用示例
Dec 19 Python
python opencv通过按键采集图片源码
May 20 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
WordPress判断用户是否登录的代码
2011/03/17 PHP
PHP关联数组的10个操作技巧
2013/01/21 PHP
基于PHP Web开发MVC框架的Smarty使用说明
2013/04/19 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
Laravel 5+ .env环境配置文件详解
2020/04/06 PHP
juqery 学习之四 筛选查找
2010/11/30 Javascript
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
jQuery找出网页上最高元素的方法
2015/03/20 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
基于jQuery实现的美观星级评论打分组件代码
2015/10/30 Javascript
jquery删除数组中重复元素
2016/12/05 Javascript
JS使用tween.js动画库实现轮播图并且有切换功能
2018/07/17 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
2018/08/24 Javascript
解决vue刷新页面以后丢失store的数据问题
2020/08/11 Javascript
[50:28]LGD女子学院第三期 DOTA2复仇之魂教学
2013/12/24 DOTA
[00:55]深扒TI7聊天轮盘语音出处3
2017/05/11 DOTA
python生成随机验证码(中文验证码)示例
2014/04/03 Python
横向对比分析Python解析XML的四种方式
2016/03/30 Python
python计算auc指标实例
2017/07/13 Python
Python决策树分类算法学习
2017/12/22 Python
在CMD命令行中运行python脚本的方法
2018/05/12 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
python 读取数据库并绘图的实例
2019/12/03 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
python中for in的用法详解
2020/04/17 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
Python字符串的15个基本操作(小结)
2021/02/03 Python
哪些情况下不应该使用索引
2015/07/20 面试题
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
生物技术研究生自荐信
2013/11/12 职场文书
教师应聘个人求职信
2013/12/10 职场文书
经销商会议欢迎词
2014/01/11 职场文书
2015年前台个人工作总结
2015/04/03 职场文书
运动会广播稿300字
2015/08/19 职场文书
Python anaconda安装库命令详解
2021/10/16 Python
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL