最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

tensorflow沒有output結(jié)點,存儲成pb文件的例子

 更新時間:2020年01月04日 10:43:23   作者:DrogoZhang  
今天小編就為大家分享一篇tensorflow沒有output結(jié)點,存儲成pb文件的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

Tensorflow中保存成pb file 需要 使用函數(shù)

graph_util.convert_variables_to_constants(sess, sess.graph_def,

output_node_names=[]) []中需要填寫你需要保存的結(jié)點。如果保存的結(jié)點在神經(jīng)網(wǎng)絡(luò)中沒有被顯示定義該怎么辦?

例如我使用了tf.contrib.slim或者keras,在tf的高層很多情況下都會這樣。

在寫神經(jīng)網(wǎng)絡(luò)時,只需要簡單的一層層傳導(dǎo),一個slim.conv2d層就包含了kernal,bias,activation function,非常的方便,好處是網(wǎng)絡(luò)結(jié)構(gòu)一目了然,壞處是什么呢?

在嘗試保存pb的 output node names時,需要將最后的輸出結(jié)點保存下來,與這個結(jié)點相關(guān)的,從輸入開始,經(jīng)過層層傳遞的嵌套函數(shù)或者操作的相關(guān)結(jié)點,都會被保存,但無效的例如 計算準確率,計算loss等,就可以省略了,因為保存的pb主要是用來做預(yù)測的。

在準備查看所有的結(jié)點名稱并選取保存時,發(fā)現(xiàn)scope "local3"里面僅有相關(guān)的weights 和biases,這兩個是單獨存在的,即保存這兩個參數(shù)并沒有任何意義。

那么這時候有兩種解決辦法:

方法一:

graph_util.convert_variables_to_constants(sess, sess.graph_def, output_node_names=[var.name[:-2] for var in tf.global_variables()])

那么這個的意思是所有的variable的都被保存下來 但函數(shù)中要求的是 node name 我們通過 global_variables獲得的是 變量名 并不是 節(jié)點名

(例如 output:0 就是變量名,又叫tensor name)

output就是 node name了。

在tensorboard中可以一窺究竟

通過這樣 也可以將 所有的變量全部保存下來(但是你并不能使用,是因為你的output并沒有名字,所以你不可以通過常用的sess.graph.get_tensor_by_name來使用)

方法二:

那就是直接改寫神經(jīng)網(wǎng)絡(luò)了....當然了還是比較簡單的,只要改寫最后一個,改寫成output即可,tensorflow中無論是 變量、操作op、函數(shù)、都可以命名,那么這個地方是一個簡單的全連接,僅需要將weights*net(上一層的輸出) +bias 即可,我們只要將bias相加的結(jié)果命名為 ouput即可:

with tf.name_scope('local3'):
 
  local3_weights = tf.Variable(tf.truncated_normal([4096, self.output_size], stddev=0.1))
 
  local3_bias = tf.Variable(tf.constant(0.1, shape=[self.output_size]))
 
result = tf.add(tf.matmul(net, local3_weights), local3_bias, name="output")

這樣將上述的convert_variables_to_constants中的output_node_names只需要填寫一個['output']即可,因為這一個output結(jié)點,需要從input開始,將所有的神經(jīng)網(wǎng)絡(luò)前向傳播的操作和參數(shù)全部保存下來,因此保存的結(jié)點數(shù)量 和 方法一保存的結(jié)點數(shù)量是一樣的(console顯示都是 convert 24)。

完整的pb保存為:(我是將ckpt讀入進來,然后存成pb的)

from tensorflow.python.platform import gfile
 
 
 
load_ckpt():
 
  path = './data/output/loss1.0/'
 
  print("read from ckpt")
 
  ckpt = tf.train.get_checkpoint_state(path)
 
  saver = tf.train.Saver()
 
  saver.restore(sess, ckpt.model_checkpoint_path)
 
 
 
def write2pb_file():
 
  constant_graph = graph_util.convert_variables_to_constants(sess, sess.graph_def,
 
    output_node_names=["output"])
 
  with tf.gfile.GFile(path+'loss1.0.pb', mode='wb') as f:
 
  f.write(constant_graph.SerializeToString())
 
  print("Model is saved as " + path+'loss1.0.pb')
 
 
 
def main():
 
  load_ckpt()
 
  write2pb_file()
 

如果是簡單的直接保存,那就更簡單了。

pb文件的read,很多人會將一個net寫成一個類,在引入的時候會將新建這個類,然后讀入ckpt文件,這完全沒有問題,但是在讀取pb時,就會發(fā)生問題,因為pb中已經(jīng)包含了圖與參數(shù),引入時會創(chuàng)建一個默認的圖,但是net類中自己也會創(chuàng)建一個圖,那么這時候你運行程序,參數(shù)其實并沒有使用.pb的文件。

所以我們不能創(chuàng)建net類,然后直接讀入.pb文件,對.pb文件,通過如下代碼,獲取.pb的graph中的輸入和輸出。

self.output = self.sess.graph.get_tensor_by_name("output:0")
 
self.input = self.sess.graph.get_tensor_by_name("images:0")

注意此時要加:0 因為你獲取的不再是結(jié)點了,而是一個真實的變量,我的理解是,結(jié)點相當于一個類,:0是對象,默認初始化值就是對象的初始化。

然后就可以通過self.sess.run(self.output(feed_dict={self.input: your_input})))運行你的網(wǎng)絡(luò)了!

以上這篇tensorflow沒有output結(jié)點,存儲成pb文件的例子就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python給PDF添加水印的代碼步驟

    Python給PDF添加水印的代碼步驟

    在本教程中,我們將學(xué)習(xí)如何使用 Python 編程語言以及 PyPDF2 和 reportlab 庫來向 PDF 文檔中添加水印,水印通常用于標記文檔的版權(quán)信息、保密級別或其他重要通知,需要的朋友可以參考下
    2025-02-02
  • Python操作多維數(shù)組輸出和矩陣運算示例

    Python操作多維數(shù)組輸出和矩陣運算示例

    這篇文章主要介紹了Python操作多維數(shù)組輸出和矩陣運算,結(jié)合實例形式分析了Python多維數(shù)組的生成、打印輸出及矩陣運算相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • Anaconda3中的Jupyter notebook添加目錄插件的實現(xiàn)

    Anaconda3中的Jupyter notebook添加目錄插件的實現(xiàn)

    這篇文章主要介紹了Anaconda3中的Jupyter notebook添加目錄插件的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 詳解python中的Turtle函數(shù)庫

    詳解python中的Turtle函數(shù)庫

    這篇文章主要介紹了python中的Turtle函數(shù)庫,包括函數(shù)庫的引用方式,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • python打印經(jīng)典故事從前有座山的幾種寫法

    python打印經(jīng)典故事從前有座山的幾種寫法

    在定義了函數(shù)之后,就可以使用該函數(shù)了,下面這篇文章主要給大家介紹了關(guān)于python打印經(jīng)典故事從前有座山的幾種寫法,通過這個有意思的實例幫助大家學(xué)習(xí)python,需要的朋友可以參考下
    2022-05-05
  • python類參數(shù)self使用示例

    python類參數(shù)self使用示例

    python中__new__和__init__到底是怎么一回事,使用方法看下面的代碼,大家參考使用吧
    2014-02-02
  • Python中導(dǎo)入自定義模塊的幾種方法總結(jié)

    Python中導(dǎo)入自定義模塊的幾種方法總結(jié)

    這篇文章主要介紹了Python中導(dǎo)入自定義模塊的幾種方法總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 在python中計算ssim的方法(與Matlab結(jié)果一致)

    在python中計算ssim的方法(與Matlab結(jié)果一致)

    這篇文章主要介紹了在python中計算ssim的方法(與Matlab結(jié)果一致),本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • python+matplotlib實現(xiàn)鼠標移動三角形高亮及索引顯示

    python+matplotlib實現(xiàn)鼠標移動三角形高亮及索引顯示

    這篇文章主要介紹了Python+matplotlib實現(xiàn)鼠標移動三角形高亮及索引顯示,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • python自動打開瀏覽器下載zip并提取內(nèi)容寫入excel

    python自動打開瀏覽器下載zip并提取內(nèi)容寫入excel

    這篇文章主要給大家介紹了關(guān)于python自動打開瀏覽器下載zip并提取內(nèi)容寫入excel的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評論

米脂县| 高碑店市| 长泰县| 青阳县| 雅安市| 定远县| 子长县| 同江市| 乐至县| 石渠县| 泾阳县| 琼海市| 镇康县| 张家口市| 米易县| 治县。| 廉江市| 宜城市| 临泽县| 微博| 五台县| 苗栗县| 静安区| 台湾省| 三台县| 确山县| 太仆寺旗| 甘泉县| 潜江市| 葵青区| 辰溪县| 青田县| 碌曲县| 镇原县| 邳州市| 西安市| 北海市| 益阳市| 墨脱县| 蕉岭县| 广丰县|