簡體   English   中英

如何使用tf.train.Saver()方法recover_last_checkpoints?

[英]How to use method recover_last_checkpoints of tf.train.Saver()?

文檔寫道應該將檢查點路徑列表傳遞給它,但如何獲取列表? 通過硬編碼? 不,這是一個愚蠢的做法。 通過解析協議緩沖區文件(模型目錄中名為checkpoint的文件)? 但是tensorflow沒有實現解析器,是嗎? 所以我必須自己實施一個嗎? 獲得檢查點路徑列表是否有良好的做法?

我提出這個問題,因為這些天我被一件事困擾。 如您所知,由於某種原因,為期數天的培訓可能會崩潰,我必須從最新的檢查點恢復。 恢復培訓很簡單,因為我只需要編寫以下代碼:

restorer = tf.train.Saver()
restorer.restore(sess, latest_checkpoint)

我可以使用tf.train.latest_checkpoint()來硬編碼latest_checkpoint ,或者稍微更聰明一些。

但是,在我恢復訓練后出現問題。 那些在崩潰之前創建的舊檢查點文件留在那里。 Saver僅管理在一次運行中創建的檢查點文件。 我希望它也可以管理以前創建的檢查點文件,這樣它們就會被自動刪除,而且我不必每次都手動刪除它們。 我認為這種重復工作真的很傻。

然后我在類tf.train.Saver()找到recover_last_checkpoints方法,它允許Saver管理舊的檢查點。 但它使用起來並不方便。 那么有什么好的解決方案嗎?

正如@isarandi在評論中提到的,最簡單的方法是首先使用get_checkpoint_state‌然后all_model_checkpoi‌​nt_paths恢復所有檢查點路徑,這基本上是一個未記錄的功能。 然后,您可以恢復最新狀態:

states = tf.train.get_checkpoint_state‌​(your_checkpoint_dir‌​)
checkpoint_paths = states.all_model_checkpoi‌​nt_paths
saver.recover_last_checkpoints(checkpoint_paths)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM