基于tensorflow权重文件的解读

 更新时间:2021年05月26日 17:18:17   作者:AI剑客  
这篇文章主要介绍了关于tensorflow权重文件的解读,具有很好的参考价值,希望对大家有所帮助。

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

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

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

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模型的调用,权重查看

以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

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的词法分析与语法分析

    这篇文章主要介绍了Python的词法分析(Lexical Analysis)与 语法分析(Syntactic Analysis),需要的朋友可以参考下
    2013-05-05
  • python pycharm最新版本激活码(永久有效)附python安装教程

    python pycharm最新版本激活码(永久有效)附python安装教程

    PyCharm是一个多功能的集成开发环境,只需要在pycharm中创建python file就运行python,并且pycharm内置完备的功能,这篇文章给大家介绍python pycharm激活码最新版,需要的朋友跟随小编一起看看吧
    2020-01-01
  • PyTorch详解经典网络ResNet实现流程

    PyTorch详解经典网络ResNet实现流程

    ResNet全称residual neural network,主要是解决过深的网络带来的梯度弥散,梯度爆炸,网络退化(即网络层数越深时,在数据集上表现的性能却越差)的问题
    2022-05-05
  • python 使用元类type创建类

    python 使用元类type创建类

    这篇文章主要介绍了Python 使用元类type创建类,结合实例形式详细分析了Python元类的概念、功能及元类type创建类对象的常见应用技巧,需要的朋友可以参考一下文章的具体内容。希望对你有所帮助
    2021-10-10
  • python+pygame简单画板实现代码实例

    python+pygame简单画板实现代码实例

    这篇文章主要介绍了python+pygame简单画板实现代码实例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Python如何在列表尾部添加元素

    Python如何在列表尾部添加元素

    这篇文章主要介绍了Python如何在列表尾部添加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • tensorflow基于Anaconda环境搭建的方法步骤

    tensorflow基于Anaconda环境搭建的方法步骤

    本文主要介绍了tensorflow基于Anaconda环境搭建的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • python 利用opencv实现图像网络传输

    python 利用opencv实现图像网络传输

    这篇文章主要介绍了python 如何利用opencv实现图像网络传输,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-11-11
  • 使用numpy实现矩阵的翻转(flip)与旋转

    使用numpy实现矩阵的翻转(flip)与旋转

    这篇文章主要介绍了使用numpy实现矩阵的翻转(flip)与旋转,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Python+tkinter自定义实现文件选择按钮

    Python+tkinter自定义实现文件选择按钮

    这篇文章主要为大家详细介绍了如何利用Python和tkinter自定义实现简单的文件选择按钮和颜色选择按钮,有需要的小伙伴可以跟随小编一起学习一下
    2023-10-10

最新评论