tensorflow之pd模型
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模型相关推荐
- TensorFlow与PyTorch模型部署性能比较
TensorFlow与PyTorch模型部署性能比较 前言 2022了,选 PyTorch 还是 TensorFlow?之前有一种说法:TensorFlow 适合业界,PyTorch 适合学界.这种说 ...
- 深度学习利器:TensorFlow与NLP模型
深度学习利器:TensorFlow与NLP模型 享到:微博微信FacebookTwitter有道云笔记邮件分享 稍后阅读 我的阅读清单 前言 自然语言处理(简称NLP),是研究计算机处理人类语言的一门 ...
- AI开发者大会之AI学习与进阶实践:2020年7月3日《如何转型搞AI?》、《基于AI行业价值的AI学习与进阶路径》、《自动机器学习与前沿AI开源项目》、《使用TensorFlow实现经典模型》
AI开发者大会之AI学习与进阶实践:2020年7月3日<如何转型搞AI?>+<无行业不智能:基于AI行业价值的AI学习与进阶路径>.<自动机器学习与前沿AI开源项目> ...
- Tensorflow:TF模型文件(checkpoint文件夹下ckpt文件之data、index、meta)保存、模型导入、恢复并fine-tuning之详细攻略
Tensorflow:TF模型文件(checkpoint文件夹下ckpt文件之data.index.meta)保存.模型导入.恢复并fine-tuning之详细攻略 目录 保存TF训练好的模型 1.T ...
- 8.1 mnist_soft,TensorFlow构建回归模型
背景 之前已经写了很多TensorFlow的基本知识,现在利用TensorFlow实现一些简单的功能,对原来的知识进行串联,并初步入门,该部分共包括三篇,分别实现的是回归模型,浅层神经网络,KNN. ...
- 【tensorflow速成】Tensorflow图像分类从模型自定义到测试
文章首发于微信公众号<与有三学AI> [tensorflow速成]Tensorflow图像分类从模型自定义到测试 这是给大家准备的tensorflow速成例子 上一篇介绍了 Caffe , ...
- 使用TensorFlow训练WDL模型性能问题定位与调优
简介 TensorFlow是Google研发的第二代人工智能学习系统,能够处理多种深度学习算法模型,以功能强大和高可扩展性而著称.TensorFlow完全开源,所以很多公司都在使用,但是美团点评在使用 ...
- tensorflow笔记:模型的保存与训练过程可视化
tensorflow笔记系列: (一) tensorflow笔记:流程,概念和简单代码注释 (二) tensorflow笔记:多层CNN代码分析 (三) tensorflow笔记:多层LSTM代 ...
- 【tensorflow】Sequential 模型方法
深入学习Keras中Sequential模型及方法 - 战争热诚 - bky https://www.cnblogs.com/wj-1314/p/9579490.html Sequential 序贯模 ...
最新文章
- 华为终于放出方舟编译器源代码!开源平台同步亮相,网友:硬核项目
- ASP.NET EntityFrameworkCore code first 多对多设计
- 排序算法系列:选择排序算法
- ExecutorCompletionService 源码分析
- 一些相当不错的php开源 AJAX聊天工具
- 动态字段插入及查询redis小结
- 《springcloud超级入门》Spring Cloud是什么?Spring Cloud版本介绍《二》
- Python获取Redis所有Key以及内容
- spring官网下载
- ps导出切片批量改名
- Makefile编写实例
- “自由软件”已过时?
- 离散数学真值表(c语言编程实现)
- django学习日志(模板的渲染过程)第八部分:字符串数据转义
- 给移动硬盘装上LINUX全攻略,给移动硬盘装上LINUX全攻略
- python-基础语法-glob.glob()
- 苦涩又难懂的io<3>
- 《Linux Shell脚本攻略》学习笔记-第一章
- Arcgis中属性值小数点前0不显示解决方法
- ThinkPad P52 安装Ubuntu16双系统踩雷与建议 (图显P1000)
热门文章
- 迈克菲实验室:Flame病毒的深度分析
- soapUI(groovy脚本作用2)请不要问为什么系列2
- ASP.NET MVC2用户界面的巨大改变
- Java 操作MySql Blob 字段
- Meteor资源国外优秀web APP 收藏
- 计算机在工业工程中的应用,在工业工程中信息技术的应用原稿(全文完整版)...
- zb_system login.php,zblog后台登录地址怎么修改?
- Mysql多源复制半同步_MySQL多源复制搭建
- 出现这6种评估违法状况,征收补偿决定可能被撤销!
- Vue学习笔记之13-webpack的配置 傻子看了都会配置的超详细教程