您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:基于tensorflow权重文件的解读

51自学网 2021-10-30 22:37:29
  python
这篇教程基于tensorflow权重文件的解读写得很实用,希望能帮到您。

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

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

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

import tensorflow as tfcpktFileName = 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 npimport tensorflow as tfimport sysmodel = 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:        passw0 = 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-00001MyModel.index

以上为个人经验,希望能给大家一个参考,也希望大家多多支持51zixue.net。


解决Python字典查找报Keyerror的问题
python结合多线程爬取英雄联盟皮肤(原理分析)
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。