import tensorflow as tf
from tensorflow import saved_model as sm
model_dir =  '/home/test/070807_model'
# 首先定义一个极其简单的计算图
X = tf.placeholder(tf.float32, shape=(3, ),name="input")
scale = tf.Variable([10, 11, 12], dtype=tf.float32,name="w")
y = tf.multiply(X, scale,name="output")
#X = tf.placeholder(tf.float32, shape=(3, ))
#scale = tf.Variable([10, 11, 12], dtype=tf.float32)
#y = tf.multiply(X, scale)
# 在会话中运行
with tf.Session() as sess:sess.run(tf.initializers.global_variables())value = sess.run(y, feed_dict={X: [1., 2., 3.]})print(value)# 准备存储模型path = model_dirbuilder = sm.builder.SavedModelBuilder(path)# 构建需要在新会话中恢复的变量的 TensorInfo protobufX_TensorInfo = sm.utils.build_tensor_info(X)scale_TensorInfo = sm.utils.build_tensor_info(scale)y_TensorInfo = sm.utils.build_tensor_info(y)# 构建 SignatureDef protobufSignatureDef = sm.signature_def_utils.build_signature_def(inputs={'X': X_TensorInfo, 'w': scale_TensorInfo},outputs={'y': y_TensorInfo},method_name='test')# 将 graph 和变量等信息写入 MetaGraphDef protobuf# 这里的 tags 里面的参数和 signature_def_map 字典里面的键都可以是自定义字符串,TensorFlow 为了方便使用,不在新地方将自定义的字符串忘记,可以使用预定义的这些值builder.add_meta_graph_and_variables(sess, tags=[sm.tag_constants.TRAINING], signature_def_map={sm.signature_constants.CLASSIFY_INPUTS: SignatureDef}) # 将 MetaGraphDef 写入磁盘builder.save()

[10. 22. 36.]
INFO:tensorflow:No assets to save.
INFO:tensorflow:No assets to write.
INFO:tensorflow:SavedModel written to: /home/test/070807_model/saved_model.pb

import tensorflow as tf
from tensorflow import saved_model as sm# 需要建立一个会话对象,将模型恢复到其中
with tf.Session() as sess:path = model_dirMetaGraphDef = sm.loader.load(sess, tags=[sm.tag_constants.TRAINING], export_dir=path)# 解析得到 SignatureDef protobufSignatureDef_d = MetaGraphDef.signature_defSignatureDef = SignatureDef_d[sm.signature_constants.CLASSIFY_INPUTS]# 解析得到 3 个变量对应的 TensorInfo protobufX_TensorInfo = SignatureDef.inputs['X']scale_TensorInfo = SignatureDef.inputs['w']y_TensorInfo = SignatureDef.outputs['y']# 解析得到具体 Tensor# .get_tensor_from_tensor_info() 函数中可以不传入 graph 参数,TensorFlow 自动使用默认图X = sm.utils.get_tensor_from_tensor_info(X_TensorInfo, sess.graph)scale = sm.utils.get_tensor_from_tensor_info(scale_TensorInfo, sess.graph)y = sm.utils.get_tensor_from_tensor_info(y_TensorInfo, sess.graph)print(sess.run(scale))print(sess.run(y, feed_dict={X: [3., 2., 1.]}))

INFO:tensorflow:Restoring parameters from /home/test/070807_model/variables/variables
[10. 11. 12.]
[30. 22. 12.]

这里的"x","w","y"需要与build_signature_def定义有关,通过签名来定义id;与前面训练推理部分完全独立;

print(X_TensorInfo.name)
print(scale_TensorInfo.name)
print(y_TensorInfo.name)

input_1:0
w_1:0
output_1:0

转载自:https://www.cnblogs.com/mbcbyq-2137/p/10044837.html

个人使用心得:Input值为placeholder,output即为需要输出的值;output会保存所有对应的值,包括神经网络权重等;等同于sess.run需要输入啥,就Input啥;

tensorlfow.saved_model的使用相关推荐

  1. python 增加维度_Python3 Tensorlfow:增加或者减小矩阵维度的实现

    1.增加维度 下面给出两个样例 样例1: [1, 2, 3] ==> [[1],[2],[3]] import tensorflow as tf a = tf.constant([1, 2, 3 ...

  2. The Wide and Deep Learning Model(译文+Tensorlfow源码解析) 原创 2017年11月03日 22:14:47 标签: 深度学习 / 谷歌 / tensorf

    The Wide and Deep Learning Model(译文+Tensorlfow源码解析) 原创 2017年11月03日 22:14:47 标签: 深度学习 / 谷歌 / tensorfl ...

  3. TensorFlow 2.0 - tf.saved_model.save 模型导出

    文章目录 1. tf.saved_model.save 2. Keras API 模型导出 学习于:简单粗暴 TensorFlow 2 1. tf.saved_model.save tf.train. ...

  4. ModuleNotFoundError: No module named 'tensorflow.python.saved_model.model_utils'

    ModuleNotFoundError: No module named 'tensorflow.python.saved_model.model_utils' 出现原因:升级了tensorflow2 ...

  5. tensorflow中sparse_placeholder在saved_model中保存pb模型的使用方法

    # coding:utf-8# @author: liu # @file: sparse_tensor_pb.py # @time: 2020/4/3 11:00 # @desc:# coding:u ...

  6. tf.saved_model.save报错解决

    前几天写了一篇同样关于 tf.saved_model.save报错的解决文章,不过这次的错误不太一样. 上一篇文章: savemodel报错 值得注意的是: 我使用的模型是自定义模型,而不是使用ker ...

  7. 在 tensorrtserver 中使用 saved_model

    ###1. 部署 tensorrtserver 建议使用 docker 部署 tensorrtserver.docker 相关的知识网上很多,自行参考.tensorrtserver 的官方建议的安装如 ...

  8. tf.saved_model.save模型导出、TensorFlow Serving模型部署、TensorBoard中的HParams 超参数调优

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 4.11 综合案例:模型导出与部署 学习目标 目标 掌握Ten ...

  9. saved_model 转 tensorrt 的 plan 模型

    本文脚本运行环境及依赖: python 3.5.2 tnsorflow 1.14.0 tensorrt 5.0.2.6 uff 0.5.5 收到一个需要将 tensorflow 下的 saved_mo ...

最新文章

  1. 阿里P8大牛耗费三年整理的:Java大厂面试题
  2. AppScan使用分享
  3. 自然语言处理之jieba分词
  4. webform(八)——LinQ简单增、删、改、查
  5. 网站搭建从零开始(六) WordPress的基本配置
  6. 如鹏网 net高级技术 第二章 委托和事件(复习)
  7. 突然!iPhone 12/12 Pro从苹果天猫旗舰店下架,不愿参加双11活动?
  8. java中 Double和double区别
  9. 网络安全-渗透测试前置知识
  10. 曾宪武《物联网通信技术》课后答案(三)
  11. paypal android app,PayPal
  12. aizu 0121 Seven Puzzle
  13. Pytorch 模型 查看网络参数的梯度以及参数更新是否正确,优化器学习率设置固定的学习率,分层设置学习率
  14. 树莓派创建文件夹权限不够_Linux或树莓派3——挂载U盘、移动硬盘并设置rwx权限...
  15. 软件测试工资直追开发,是我的错觉吗?
  16. c 语言中古括号,如何将中古调式运用在你的作品上
  17. 利用java swing编写一个简易的计算器,实现了括号,优先级,三角函数,阶乘等功能
  18. vue 手脚架创建 项目
  19. 毕达哥拉斯的面包规矩
  20. 解决 CMD 命令行中文件路径有空格

热门文章

  1. python3.x pool.map方法的实质
  2. python挖坑法实现快排
  3. Django之session验证的三种姿势
  4. python实现素数筛选法_从零开始学Python系列-第6讲:循环结构
  5. python codecs模块(用于执行编码转换之类的)
  6. RHCS套件实现高可用负载均衡集群(二)——Fence设备
  7. MySQL的单表索引优化案例
  8. addcslashes php 有什么用处,PHP addcslashes函数有什么用
  9. php 二维数组根据键值合并二维数组_php数组根据某键值,把相同键值的合并最终生成一个新的二维数组...
  10. 个人所有博客分类总结(持续更新)