2017-07-10 58 views
1

我有兩個關於使用檢查點文件恢復網絡的問題。 我使用this code來恢復我的網絡。我只需要我的原始網絡的一部分。實際上,我的原始網絡包含5個卷積(非常小)的網絡,所有這些都連接到一個大的最後完全連接層。我只想要我的5個迷你小點。 我爲網絡中的每個變量和每個圖層定義名稱。 (我注意到當我用日誌數據運行tensorboard時,一切正常,這意味着,我有我的所有變量和張量適當的名稱)從恢復的檢查點文件中獲取張量的名稱:只返回一個變量名稱

1-我的第一個問題是當我想找到這些變量中的任何一個通過恢復網絡中的名稱,我面對「沒有張貼這個名字」的錯誤。我還測試我的檢查點文件與inspect_checkpoint.py和輸出它返回只有一個變量:

Variable (DT_INT32) [] 

,並在其他的方式,我用這個代碼,再次測試了它:

from tensorflow.python import pywrap_tensorflow 
checkpoint_path = os.path.join('./', 'model.ckpt-100') 
reader = pywrap_tensorflow.NewCheckpointReader(checkpoint_path) 
var_to_shape_map = reader.get_variable_to_shape_map() 
for key in var_to_shape_map: 
    print("tensor_name: ", key) 
    print(reader.get_tensor(key)) 

,並返回:

tensor_name: Variable 
101 

我找不到這個問題的原因。這裏有沒有人遇到過這個問題?

2-基於上述網站,我用於恢復我的網絡,我有點困惑。實際上,我想恢復我的全部5個迷你網絡(這些迷你網絡的最後一層都是完全連接的)。所以,我真的不知道什麼纔是正確的方式來恢復其最後一個完全連接的層與所有權重的每一個小迷你網絡。

+0

除非你有一個機器學習一個不尋常的使用情況下,我真的建議你給https://keras.io/一展身手。這是一個高級機器學習庫,位於TensorFlow或Theano之上,並使建立深度學習模式更快捷。 pip安裝keras – DrMcCleod

回答

0

1-從外觀上看,你似乎沒有命名你的變量。它不保存變量名稱。 如果這種情況可能是因爲他們在訓練中工作,如果您有不同的類型,但是當您嘗試使用相同的密鑰名稱構建字典時,寫入內存會混亂並被覆蓋。

2-完全恢復你的網絡,你必須使用

saver = tf.train.Saver() 
saver.save(session_to_save, 'namefile') 
... 
saver.restore(session_to_restore, 'namefile') 
+0

謝謝。實際上,我把我的代碼關於每一個迷你圖書館網站放到一個python類中,然後爲了創建它們中的每一個我從這個類中創建一個實例。在定義該類之後,我的項目中所有變量的名稱都消失了(基於上面的描述)。我不知道爲什麼會發生這種情況。 –