您好,登錄后才能下訂單哦!
小編給大家分享一下解讀tensorflow權重文件的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
1.解讀tensorflow權重文件,透過 tf.train.NewCheckpointReader函數。
2.reader.get_variable_to_shape_map()可以得到權重文件里面的tensor名稱。
3.reader.get_tensor(key) 可以得到對應tensor的權重值。
import tensorflow as tf cpktFileName = r'.\models\resnet_v2_152.ckpt' reader = tf.train.NewCheckpointReader(cpktFileName) for key in sorted(reader.get_variable_to_shape_map()): if key.endswith('weights') or key.endswith('biases'): keySplits = key.split(r'/') print(key) print(reader.get_tensor(key))
第一,每個tensor name都以resnet_v2_152開頭
第二,tensor name第二段為block,共有四個block。與網絡架構有關。
第三,第三字段為unit,每個block里面unit數量不同。與網絡架構有關。
第四,除了組后的平坦層,第四字段都為bottleneck_v2
第五,第五字段為‘conv1',‘conv2',‘conv3',‘shortcut'
第六,第六字段為‘weights' or ‘biases'
補充:tensorflow模型的調用,權重查看
以vc版本的tensorpack說明
每次運行,會有checkpoint、graph、model生成
1、其中,若文件夾已經有checkpoint,且寫有自動掉用上次模型,可以在上次的基礎上繼續訓練,否則重新生成,且不能調用之前的模型,即使已經存在
2、每次運行會重新生成graph,即使上次的已經存在,因此調用上次模型與文件夾中是否有graph無關
import numpy as np import tensorflow as tf import sys model = sys.argv[1] tensor = sys.argv[2] reader = tf.train.NewCheckpointReader(model) all_variables = reader.get_variable_to_shape_map() #reader = pywrap_tensorflow.NewCheckpointReader(ckpt_path) #param_dict = reader.get_variable_to_shape_map() for key, val in all_variables.items(): try: print key, val #key是網絡參數名,val是維度 except: pass w0 = reader.get_tensor(tensor) np.save('con1d_w.npy',w0) print(type(w0)) print(w0.shape) print(w0[0])
chekpoint—記錄了保存的最新的checkpoint文件以及其它checkpoint文件列表。在inference時,可以通過修改這個文件,指定使用哪個model
MyModel.meta文件保存的是圖結構,meta文件是pb(protocol buffer)格式文件,包含變量、op、集合等。
ckpt文件是二進制文件,保存了所有的weights、biases、gradients等變量。在tensorflow 0.11之前,保存在.ckpt文件中。0.11后,通過兩個文件保存,如:
MyModel.data-00000-of-00001 MyModel.index
以上是“解讀tensorflow權重文件的方法”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。