基于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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • TensorFlow中权重的随机初始化的方法

    一开始没看懂stddev是什么参数,找了一下,在tensorflow/python/ops里有random_ops,其中是这么写的: def random_normal(shape, mean=0.0, stddev=1.0, dtype=types.float32, seed=None, name=None): """Outputs random values from a normal distribution. Args: shape: A 1-D integer Te

  • tensorflow 输出权重到csv或txt的实例

    实例如下所示: import numpy as np W_val, b_val = sess.run([weights_tensor, biases_tensor]) np.savetxt("W.csv", W_val, delimiter=",") np.savetxt("b.csv", b_val, delimiter=",") 以上这篇tensorflow 输出权重到csv或txt的实例就是小编分享给大家的全部内容了,希

  • tensorflow 保存模型和取出中间权重例子

    下面代码的功能是先训练一个简单的模型,然后保存模型,同时保存到一个pb文件当中,后续可以从pd文件里读取权重值. import tensorflow as tf import numpy as np import os import h5py import pickle from tensorflow.python.framework import graph_util from tensorflow.python.platform import gfile #设置使用指定GPU os.envi

  • Tensorflow 1.0之后模型文件、权重数值的读取方式

    保存的文件有4个: checkpoint model-parameters.bin-46000.data-00000-of-00001 model-parameters.bin-46000.index model-parameters.bin-46000.meta 读取代码: from tensorflow.python import pywrap_tensorflow with tf.Graph().as_default(): with tf.Session() as sess: ckpt =

  • tensorflow 模型权重导出实例

    tensorflow在保存权重模型时多使用tf.train.Saver().save 函数进行权重保存,保存的ckpt文件无法直接打开,不利于将模型权重导入到其他框架使用(如Caffe.Keras等). 好在tensorflow提供了相关函数 tf.train.NewCheckpointReader 可以对ckpt文件进行权重查看,因此可以通过该函数进行数据导出. import tensorflow as tf import h5py cpktLogFileName = r'./checkpoi

  • 在Tensorflow中查看权重的实现

    刚开始学习tensorflow,还不太会用,开个博记录,今天遇到一个问题是用tf.layers.dense创建的全连接层,如何查看权重? 知道kernel表示了权重,但是如何提示成变量? 我分成两步: 1.查看tensor:tf.trainable_variables() 命令行里中运行即可,如下图: 可以看到tensor的name,或用更简洁的方式:variable_name = [v.name for v in tf.trainable_variables()] 运行后,trainable_

  • Tensorflow读取并输出已保存模型的权重数值方式

    这篇文章是为了对网络模型的权重输出,可以用来转换成其他框架的模型. import tensorflow as tf from tensorflow.python import pywrap_tensorflow #首先,使用tensorflow自带的python打包库读取模型 model_reader = pywrap_tensorflow.NewCheckpointReader(r"model.ckpt") #然后,使reader变换成类似于dict形式的数据 var_dict =

  • 基于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.NewCheck

  • 基于Tensorflow的MNIST手写数字识别分类

    本文实例为大家分享了基于Tensorflow的MNIST手写数字识别分类的具体实现代码,供大家参考,具体内容如下 代码如下: import tensorflow as tf import numpy as np from tensorflow.examples.tutorials.mnist import input_data from tensorflow.contrib.tensorboard.plugins import projector import time IMAGE_PIXELS

  • 对linux下syslogd以及syslog.conf文件的解读说明

    1: syslog.conf的介绍 对于不同类型的Unix,标准UnixLog系统的设置,实际上除了一些关键词的不同,系统的syslog.conf格式是相同的.syslog采用可配置的.统一的系统登记程序,随时从系统各处接受log请求,然后根据/etc/syslog.conf中的预先设定把log信息写入相应文件中.邮寄给特 定用户或者直接以消息的方式发往控制台.值得注意的是,为了防止入侵者修改.删除messages里的记录信息,可以采用用打印机记录或采用方式来挫败入 侵者的企图. 2: sysl

  • 基于Tensorflow批量数据的输入实现方式

    基于Tensorflow下的批量数据的输入处理: 1.Tensor TFrecords格式 2.h5py的库的数组方法 在tensorflow的框架下写CNN代码,我在书写过程中,感觉不是框架内容难写, 更多的是我在对图像的预处理和输入这部分花了很多精神. 使用了两种方法: 方法一: Tensor 以Tfrecords的格式存储数据,如果对数据进行标签,可以同时做到数据打标签. ①创建TFrecords文件 orig_image = '/home/images/train_image/' gen

  • 详谈tensorflow gfile文件的用法

    一.gfile模块是什么 gfile模块定义在tensorflow/python/platform/gfile.py,但其源代码实现主要位于tensorflow/tensorflow/python/lib/io/file_io.py,那么gfile模块主要功能是什么呢? google上的定义为: 翻译过来为: 没有线程锁的文件I / O操作包装器 ...对于TensorFlow的tf.gfile模块来说是一个特别无用的描述! tf.gfile模块的主要角色是: 1.提供一个接近Python文件对

  • 基于Tensorflow高阶读写教程

    前言 tensorflow提供了多种读写方式,我们最常见的就是使用tf.placeholder()这种方法,使用这个方法需要我们提前处理好数据格式,不过这种处理方法也有缺陷:不便于存储和不利于分布式处理,因此,TensorFlow提供了一个标准的读写格式和存储协议,不仅如此,TensorFlow也提供了基于多线程队列的读取方式,高效而简洁,读取速度也更快,据一个博主说速度能提高10倍,相当的诱人.[下面的实验均是在tensorflow1.0的环境下进行] tensorflow的example解析

  • tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)

    网上关于tensorflow模型文件ckpt格式转pb文件的帖子很多,本人几乎尝试了所有方法,最后终于成功了,现总结如下.方法无外乎下面两种: 使用tensorflow.python.tools.freeze_graph.freeze_graph 使用graph_util.convert_variables_to_constants 1.tensorflow模型的文件解读 使用tensorflow训练好的模型会自动保存为四个文件,如下 checkpoint:记录近几次训练好的模型结果(名称).

  • 基于Tensorflow读取MNIST数据集时网络超时的解决方式

    最近在学习TensorFlow,比较烦人的是使用tensorflow.examples.tutorials.mnist.input_data读取数据 from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets('/temp/mnist_data/') X = mnist.test.images.reshape(-1, n_steps, n_inputs) y = mnis

  • 基于tensorflow for循环 while循环案例

    我就废话不多说了,大家还是直接看代码吧~ import tensorflow as tf n1 = tf.constant(2) n2 = tf.constant(3) n3 = tf.constant(4) def cond1(i, a, b): return i < n1 def cond2(i, a, b): return i < n2 def cond3(i, a, b): return i < n3 def body(i, a, b): return i + 1, b, a +

  • AJAX和JSP实现的基于WEB的文件上传的进度控制代码第1/2页

    1.引言 2.实现代码 2.1.服务器端代码 2.1.1. 文件上传状态类(FileUploadStatus) 2.1.2. 文件上传状态侦听类(FileUploadListener) 2.1.3. 后台服务类(BackGroundService) 2.1.4. 文件上传状态控制类(BeanControler) 2.2. 客户端代码 2.2.1. AjaxWrapper.js 2.2.2. fileUpload.html 2.2.3. result.jsp 2.2.4. fileUpload.c

随机推荐