pb格式,可以把训练好的模型的参数固话,便于调用。

举个示例:

with tf.Session(graph=tf.Graph()) as sess:x = tf.placeholder(tf.int32, name='x')y = tf.placeholder(tf.int32, name='y')b = tf.Variable(1, name='b')xy = tf.multiply(x, y)# 这里的输出需要加上name属性op = tf.add(xy, b, name='op_to_store')sess.run(tf.global_variables_initializer())# convert_variables_to_constants 需要指定output_node_names,list(),可以多个constant_graph = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, ['op_to_store'])# 测试 OPfeed_dict = {x: 10, y: 3}print(sess.run(op, feed_dict))# 写入序列化的 PB 文件with tf.gfile.FastGFile('model.pb', mode='wb') as f:f.write(constant_graph.SerializeToString())# 输出# INFO:tensorflow:Froze 1 variables.# Converted 1 variables to const ops.# 31

输出文件如下:

这个pb文件如何调用呢?

我们再写个demo

sess = tf.Session()
with tf.gfile.FastGFile('model.pb', 'rb') as f:graph_def = tf.GraphDef()graph_def.ParseFromString(f.read())sess.graph.as_default()tf.import_graph_def(graph_def, name='') # 导入计算图
# 需要有一个初始化的过程
sess.run(tf.global_variables_initializer())
# 需要先复原变量
print(sess.run('b:0'))
# 1
# 输入
input_x = sess.graph.get_tensor_by_name('x:0')
input_y = sess.graph.get_tensor_by_name('y:0')
op = sess.graph.get_tensor_by_name('op_to_store:0')
ret = sess.run(op,  feed_dict={input_x: 5, input_y: 5})
print(ret)
# 输出 26

这里根据名称获取张量为什么是x:0而不是x呢?

继续研究一下:打个断点发现name确实是x:0,至于为什么,现在还不是太清楚,后续再慢慢体会。

***********************由于我们服务是用C#调用的,所以决定尝试一下C#调用pb文件**********

http://imlihang.cn/?p=183

参考上面牛人,表示感谢

首先安装

然后就可以直接调用了

Console.WriteLine("Hello World!");var graph = new TFGraph();var model = File.ReadAllBytes("model.pb");graph.Import(model);using (var session = new TFSession(graph)){var runner = session.GetRunner();TFTensor xTf = new TFTensor(new int[2] { 10,15});TFTensor yTf = new TFTensor(new int[2] { 2, 2 });// 其中的graph["input"][0], graph["output"][0]指的是,input节点的第1个输出,和 output节点的第1个输出,等同于python中的input:0 output:0 // 其中Fetch()用于取得输出变量。 runner.AddInput(graph["x"][0], xTf);runner.AddInput(graph["y"][0], yTf);runner.Fetch(graph["op_to_store"][0]);var output = runner.Run();var result = output[0];var iData = result.GetValue(true);Console.ReadKey();}Console.ReadKey();

看下运行结果:

是不是完全符合预期结果。

tensorflow之pd模型相关推荐

  1. TensorFlow与PyTorch模型部署性能比较

    TensorFlow与PyTorch模型部署性能比较 前言 2022了,选 PyTorch 还是 TensorFlow?之前有一种说法:TensorFlow 适合业界,PyTorch 适合学界.这种说 ...

  2. 深度学习利器:TensorFlow与NLP模型

    深度学习利器:TensorFlow与NLP模型 享到:微博微信FacebookTwitter有道云笔记邮件分享 稍后阅读 我的阅读清单 前言 自然语言处理(简称NLP),是研究计算机处理人类语言的一门 ...

  3. AI开发者大会之AI学习与进阶实践:2020年7月3日《如何转型搞AI?》、《基于AI行业价值的AI学习与进阶路径》、《自动机器学习与前沿AI开源项目》、《使用TensorFlow实现经典模型》

    AI开发者大会之AI学习与进阶实践:2020年7月3日<如何转型搞AI?>+<无行业不智能:基于AI行业价值的AI学习与进阶路径>.<自动机器学习与前沿AI开源项目> ...

  4. Tensorflow:TF模型文件(checkpoint文件夹下ckpt文件之data、index、meta)保存、模型导入、恢复并fine-tuning之详细攻略

    Tensorflow:TF模型文件(checkpoint文件夹下ckpt文件之data.index.meta)保存.模型导入.恢复并fine-tuning之详细攻略 目录 保存TF训练好的模型 1.T ...

  5. 8.1 mnist_soft,TensorFlow构建回归模型

    背景 之前已经写了很多TensorFlow的基本知识,现在利用TensorFlow实现一些简单的功能,对原来的知识进行串联,并初步入门,该部分共包括三篇,分别实现的是回归模型,浅层神经网络,KNN. ...

  6. 【tensorflow速成】Tensorflow图像分类从模型自定义到测试

    文章首发于微信公众号<与有三学AI> [tensorflow速成]Tensorflow图像分类从模型自定义到测试 这是给大家准备的tensorflow速成例子 上一篇介绍了 Caffe , ...

  7. 使用TensorFlow训练WDL模型性能问题定位与调优

    简介 TensorFlow是Google研发的第二代人工智能学习系统,能够处理多种深度学习算法模型,以功能强大和高可扩展性而著称.TensorFlow完全开源,所以很多公司都在使用,但是美团点评在使用 ...

  8. tensorflow笔记:模型的保存与训练过程可视化

    tensorflow笔记系列:  (一) tensorflow笔记:流程,概念和简单代码注释  (二) tensorflow笔记:多层CNN代码分析  (三) tensorflow笔记:多层LSTM代 ...

  9. 【tensorflow】Sequential 模型方法

    深入学习Keras中Sequential模型及方法 - 战争热诚 - bky https://www.cnblogs.com/wj-1314/p/9579490.html Sequential 序贯模 ...

最新文章

  1. 华为终于放出方舟编译器源代码!开源平台同步亮相,网友:硬核项目
  2. ASP.NET EntityFrameworkCore code first 多对多设计
  3. 排序算法系列:选择排序算法
  4. ExecutorCompletionService 源码分析
  5. 一些相当不错的php开源 AJAX聊天工具
  6. 动态字段插入及查询redis小结
  7. 《springcloud超级入门》Spring Cloud是什么?Spring Cloud版本介绍《二》
  8. Python获取Redis所有Key以及内容
  9. spring官网下载
  10. ps导出切片批量改名
  11. Makefile编写实例
  12. “自由软件”已过时?
  13. 离散数学真值表(c语言编程实现)
  14. django学习日志(模板的渲染过程)第八部分:字符串数据转义
  15. 给移动硬盘装上LINUX全攻略,给移动硬盘装上LINUX全攻略
  16. python-基础语法-glob.glob()
  17. 苦涩又难懂的io<3>
  18. 《Linux Shell脚本攻略》学习笔记-第一章
  19. Arcgis中属性值小数点前0不显示解决方法
  20. ThinkPad P52 安装Ubuntu16双系统踩雷与建议 (图显P1000)

热门文章

  1. 迈克菲实验室:Flame病毒的深度分析
  2. soapUI(groovy脚本作用2)请不要问为什么系列2
  3. ASP.NET MVC2用户界面的巨大改变
  4. Java 操作MySql Blob 字段
  5. Meteor资源国外优秀web APP 收藏
  6. 计算机在工业工程中的应用,在工业工程中信息技术的应用原稿(全文完整版)...
  7. zb_system login.php,zblog后台登录地址怎么修改?
  8. Mysql多源复制半同步_MySQL多源复制搭建
  9. 出现这6种评估违法状况,征收补偿决定可能被撤销!
  10. Vue学习笔记之13-webpack的配置 傻子看了都会配置的超详细教程