基本上用之前要用 saver = tf.train.Saver() 宣告一下,通常會宣告在with tf.Session...as sess:前,在with tf.Session...as sess:中執行saver.save(sess, dir)就會把變數內容以及名稱存起來,到時候restore時就會去對應你相同變數名稱以及型態的變數把值放進去
通常seve會有一個checkpoint檔記錄你存了幾次的.ckpt,我們可以跑100step存一次,以免電腦掛機或怎樣,譬如說,跑到一半發現時間不夠交作業必須停止,或是發現結果已經很好了
這邊要注意的有很多點,第一點雖然我們寫的是存一個.ckpt檔,但實際上會存成三個檔案:
1. model.ckpt.meta: 保存tensorflow計算圖的結構,可以理解為神經網路結構
2. model.ckpt : 保存變數的值
3. checkpoint: 目錄下所有模型文件列表
第二點,save只記錄變數名稱以及其對應的值,並不儲存網路結構等等,所以變數的空殼還是要自己宣告,可以用tensor宣告,或是用numpy宣告,透過reshape轉成tensor
但是呢你要不宣告該變數就把變數值取出來也是可以,或是取值放入不同變數名稱也可以的
例如
第三點,restore不用進行變量初始化,這是因為只是將變量的值,通過已經保存的模型加載進來
題外話:
anaconda的virtualenv就是一個資料夾一個虛擬環境,資歷夾中會包含你在虛擬環境中見的套件等等,當你想用該環境時,就在anaconda promt 用 activate呼叫該環境名稱(資料夾名稱),會看到指令前(base)變成(虛擬環境名稱),接下來用python執行的.py黨都會在該環境設定下面跑
你可以設置很多虛擬環境,以不同資歷夾(名稱)作為分界