tensorflow predict,tensorflow之pd模型

 2023-11-30 阅读 23 评论 0

摘要: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,

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

tensorflow predict。輸出文件如下:

?這個pb文件如何調用呢?

tensorflow算法?我們再寫個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,至于為什么,現在還不是太清楚,后續再慢慢體會。

tensorflow 模型文件、

***********************由于我們服務是用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();

?看下運行結果:

?是不是完全符合預期結果。

?

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/185810.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息