tensorboard ckpt pb 模型的输出节点_Tensorflow模型文件固化

当我们拿到别人训练后保存的模型文件后,如果需要通过C++接口部署模型的话,一般情况下都需要将模型固化并保存为pb格式。友好的Tensorflow提供了相关的固化命令脚本,下面以 .meta 格式的固化为例说明使用的方式。

33c617748ccd96ad9dc1b0d676cfb1de.png

一、文件内容

用 tf.train.Saver.save() 方式保存下来的checkpoint会产生四个文件:

  • checkpoint

记录了部分已存储和最近存储的模型:

1dd486d5898d3440a2cfab040d1b3b92.png
  • model.ckpt.data-00000-of-00001

保存了模型的所有变量的值,TensorBundle集合。

  • model.ckpt.index

string-string的映射表,映射表的key值为tensor名,value为tensor的metadata。

  • model.ckpt.meta

保存了graph结构,包括 GraphDef、SaverDef等,当存在meta文件,我们可以不需要在代码中定义模型结构,直接读取meta文件中的模型结构即可;而如果没有meta文件,则需要写好构建模型结构的代码,再加载data文件,得到变量值。

二、固化命令

bba03d1d78b71b579a0efdae573b2f2f.png

问题一可能遇到的错误

UnicodeDecoderError: 'utf-8' codec can't decode byte 0xd8 in position 1: invalid continuation byte

解决:传入参数 --input_binary=True

问题二当我们手上只有别人训练好的模型文件时,如何确定输入参数中的--output_node_name呢?

最直观的方式是使用TensorBoard查看图结构,步骤如下:

(1)从.meta文件生成Tensorboard所需的log,可以通过以下代码生成,运行脚本后在log目录下生成events.out.tfevents.xxx文件。

ef1a77dca025749f8582185a26a8012d.png

(2)在Windows下通过cmd命令行启动Tensorboard。

11fc06c9b292a53ea316175446d52564.png

(3)浏览器打开显示的网址,通过可视化的图结构可以清楚地看到输入和输出节点的名字。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值