【tensorflow2caffe】二 、tensorflow模型介绍以及参数提取

在博客开始前,首先郑重感谢博主jiongnima的博客对我的帮助,我按照博主的方法顺利的把bcnn模型的tensorflow版转为caffe版,关于bcnn模型,它是个细粒度分类模型,我将在后续的博客中详细介绍。

首先隆重呈上博主的链接:

https://blog.csdn.net/jiongnima/article/details/78326515

    转模型系列博文的操作主要基于博主的实验探索,中间也穿插着我自己的一些想法以及重新编排,在强烈膜拜原创的基础上,将转模型过程进行了亲自的实践并成功复现,因此暂时(不要脸)的将该系列博文归为原创。

    下面进入正题部分。

    经过上文模型解析, 我们已经知道caffemodel里存储了啥, 详见https://blog.csdn.net/zl3090/article/details/89040761 , 因此现在要做的事包括自己写出deploy和提取tensorflow中的参数,deploy在上文已经做了解释,因此本文主要介绍tensorflow模型以及他的参数提取.

    首先要对tensorflow模型有个初步的了解:

    tensorflow通过tf.train.Saver()实现模型的保存和提取,其中的save方法将模型保存到指定路径,在目标路径下会形成四个文件:

其中: 

(1) checkpoint 文本文件,记录了模型文件的路径信息列表

(2) model.ckpt.data-00000-of-00001 记录了网络权重信息

(3) model.ckpt.index 保存了模型中的参数索引

(4) model.ckpt.meta 二进制文件,保存了模型的计算图结构信息(模型的网络结构)

因此在提取参数的时候,在meta中找到参数名,然后通过index,从数据中提取数据具体的值.

 

    接下来开始从tensorflow中参数提取过程,步骤如下:

(1) 载入数据流图;

(2) 通过checkpoint找到目前最新的训练保存结果;

(3) 提取训练得到的参数.

所用代码如下:

#!/usr/bin/python
 
import tensorflow as tf
import numpy as np
 
with tf.Session() as sess:
    new_saver = tf.train.import_meta_graph('model.ckpt-189200.meta') #load graph
    for var in tf.trainable_variables(): #get the param names
        print var.name #print parameters' names
        new_saver.restore(sess, tf.train.latest_checkpoint('./')) #find the newest training result
        all_vars = tf.trainable_variables()
        for v in all_vars:
            v_4d = np.array(sess.run(v)) #get the real parameters

    先用 tf.train.impor_meta_graph导入了训练数据流图,然后用tf.train.lastest_checkpoint找到最新训练数据,最后用sess.run(v)得到了各个参数.

    我们提取出来tensorflow中的参数,下一步是将其转换为caffe中的形式,转换过程与理解请参见下一篇博客.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值