基于tensorflow权重文件的解读

作者:AI剑客 时间:2023-11-04 02:05:35 

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

来源:https://blog.csdn.net/qq_43258953/article/details/102886973

标签:tensorflow,权重,文件
0
投稿

猜你喜欢

  • 在ASP.NET 2.0中操作数据之三十六:在DataList里编辑和删除数据概述

    2024-05-09 09:03:43
  • 基于python图像处理API的使用示例

    2022-12-19 02:14:53
  • Python异步编程之协程任务的调度操作实例分析

    2023-02-23 17:03:46
  • JavaScript日期工具类DateUtils定义与用法示例

    2024-04-16 08:51:29
  • 关于matplotlib-legend 位置属性 loc 使用说明

    2021-12-19 06:48:25
  • centos下安装配置phpMyAdmin的方法步骤

    2023-11-09 01:27:11
  • Pycharm及python安装详细教程(图解)

    2023-01-06 00:26:00
  • JavaScript中匿名函数用法实例

    2024-04-19 09:51:19
  • 解析数据库分页的两种方法对比(row_number()over()和top的对比)

    2024-01-25 08:58:16
  • Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的

    2021-10-23 19:00:50
  • block 和 inline 的区别是?

    2009-12-08 13:00:00
  • Tensorflow全局设置可见GPU编号操作

    2021-04-21 12:41:46
  • 分享18个最佳代码编辑器/IDE开发工具

    2022-03-26 01:31:24
  • Python中Tkinter组件Button的具体使用

    2022-06-07 00:26:33
  • python+pyqt5编写md5生成器

    2022-03-11 03:06:47
  • 用python实现的可以拷贝或剪切一个文件列表中的所有文件

    2022-09-11 11:28:23
  • 基于ORA-19815闪回空间爆满问题的处理方法

    2024-01-21 03:35:04
  • 使用systemd部署服务的过程解析

    2021-06-17 21:22:21
  • MySQL主键约束和外键约束详解

    2024-01-18 08:10:41
  • JavaScript实现烟花特效(面向对象)

    2024-02-26 22:44:50
  • asp之家 网络编程 m.aspxhome.com