淺談tf.train.Saver()與tf.train.import_meta_graph的要點
(一)、tf.train.Saver()
(1). tf.train.Saver() 是用來保存tensorflow訓練模型的,默認保存全部參數
(2). 用來加載參數,註:隻加載存儲在data中的權重和偏置項等需要訓練的參數,其他一律不加載,包括meta文件中的圖也不加載
(二)、tf.train.import_meta_graph
(1). 用來加載meta文件中的圖,以及圖上定義的結點參數包括權重偏置項等需要訓練的參數,也包括訓練過程生成的中間參數,所有參數都是通過graph調用接口get_tensor_by_name(name=”訓練時的參數名稱”)來獲取
(三)、總結
(1). 保存使用tf.train.Saver()
(2). 加載可以使用tf.train.import_meta_graph(“.meta文件”),直接通過訓練參數名稱就可以獲取需要的參數,但需要提前知道訓練時的參數名稱才能獲取,要懂得tensorflow命名規則
(3). tf.train.Saver(“./checkpoints目錄/”)加載的缺點是隻加載瞭訓練參數,並且必須定義與之相同(shape,dtype要相同,tf.type要相同,如:我是placeholder,你也是tf.placeholder)方能使用,當你要獲取訓練中間參數時,需要和訓練過程一樣搭建相同的網絡.
補充:tf.train.import_meta_graph報KeyError
我在模型恢復時,在執行tf.train.import_meta_graph的時候報錯
後來發現,我的模型是在服務器上訓練的,服務器上tensorflow版本是1.11.0,而我在本地電腦上執行的 tf.train.import_meta_graph,我本地的tensorflow是1.5.0,我將tensorflow更新到1.11.0後,就解決瞭。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 基於tensorflow權重文件的解讀
- python如何獲取tensor()數據類型中的值
- 解決tensorflow模型壓縮的問題_踩坑無數,總算搞定
- python繪制高斯曲線
- 基於keras中import keras.backend as K的含義說明