TensorFlow学习记录:saved_model模块的用法

TensorFlow中的saved_model模块用于生成冻结图文件,并且saved_model模块封装了平常用的Saver类。与Saver类不同的是,saved_model模块生成的模型文件集成了打标签的操作,可以更方便地部署在生产环境中。关于为什么要用saved_model模块,这篇文章讲得挺好的。请点击这里一个saved_model对象可以存储一个或多个MetaGraphDef。那什么时...
摘要由CSDN通过智能技术生成

TensorFlow中的saved_model模块用于生成冻结图文件,并且saved_model模块封装了平常用的Saver类。与Saver类不同的是,saved_model模块生成的模型文件集成了打标签的操作,可以更方便地部署在生产环境中。

关于为什么要用saved_model模块,这篇文章讲得挺好的。请点击这里

一个saved_model对象可以存储一个或多个MetaGraphDef。那什么时候需要多个MetaGraphDef呢?也许你想同时保存模型的CPU版本和GPU版本,或者你想同时保存模型的开发版本和生产版本。这个时候你就可以用tag(标签)来区分它们了。在加载模型的时候能根据tag标签来加载不同的MetaGraphDef。

TensorFlow中的saved_model模块可以给MetaGraphDef添加多个签名(signature)。每个签名的的结构都由输入节点、输出节点、名字3部分组成。并且,输入节点,输出节点的名字可以任意指定。

1.导出带有签名的模型文件

假设之前训练了一个模型,让模型在一组混乱的数据中找到y≈2x的规律。其中
(1)用saved_model模块的builder.SavedModelBuilder类实例化一个builder对象。
(2)构建签名的输入节点inputs。该输入节点的名字为“input_x”。该名字是模型文件中输入节点的名字(可以任意取名)。
(3)构建标签的输出节点outputs。该输出节点的名字为“output”。
(4)调用build_signature_def函数,并将输入节点、输出节点和名字(sig_name)传入,生成一个签名对象。
(5)用builder对象的add_meta_graph_and_variables方法将签名加入到模型中。
(6)调用builder对象的save方法导出带有签名的模型文件。

代码如下:

from tensorflow.python.saved_model import tag_constants
	#saveddir+"tfservingmodel"为模型的保存路径
    builder = tf.saved_model.builder.SavedModelBuilder(savedir+'tfservingmodel')
    
    #定义输入签名,X为输入tensor
    inputs = {
   'input_x': tf.saved_model.utils.build_tensor_info(X)}
    #定义输出签名, z为最终需要的输出结果tensor 
    outputs = {
   'output' : tf.saved_model.utils.build_tensor_info(z)
  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值