淺談tf.train.Saver()與tf.train.import_meta_graph的要點

(一)、tf.train.Saver()

(1). tf.train.Saver() 是用來保存tensorflow訓練模型的,默認保存全部參數

(2). 用來加載參數,註:隻加載存儲在data中的權重和偏置項等需要訓練的參數,其他一律不加載,包括meta文件中的圖也不加載

tf.train.Saver()_1

tf.train.Saver()_2

(二)、tf.train.import_meta_graph

(1). 用來加載meta文件中的圖,以及圖上定義的結點參數包括權重偏置項等需要訓練的參數,也包括訓練過程生成的中間參數,所有參數都是通過graph調用接口get_tensor_by_name(name=”訓練時的參數名稱”)來獲取

tf.train.import_meta_graph

(三)、總結

(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。

推薦閱讀: