2017年1月5日 星期四

Caffe 筆記 - .caffemodel & .solverstate

在caffe訓練過程中會產生.caffemodel跟.solverstate檔案,多久存一次可以由solver.prototxt裡的snapshot來設置訓練多少次儲存一次目前的參數跟狀態。

caffemodel為模型檔案,存的是網路裡各層的參數,也就是net.params(沒net.blobs),在測試時使用的。

solverstate為中間狀態檔案,比.caffemodel儲存了更多當時資訊,如迭帶次數,當時的數據(net.blobs),learning rate等,作為要恢復訓練用的。如果跑訓練發生意外暫停時,可以利用solverstate恢復該次迭帶的資訊,繼續訓練下去。

在python interface
如果我們用
solver.net.copy_from('***.caffemodel')
這只會複製對應prototxt裡同樣名稱layer的參數,而其他訓練的參數都會依照solver.prototxt裡的設定,通常在fine-tune時會這樣用。

如果是想恢復訓練的話,可以利用
solver.restore('***.solverstate')
這裡就不需要再solver.net.copy_from().
如果需要重新恢復訓練的話,兩個檔案.solverstate跟.caffemodel都需要同時存在。

參考
https://github.com/BVLC/caffe/issues/3651
回答中有較詳細對兩者的描述
http://www.cnblogs.com/denny402/p/5103425.html
描述了.caffemodel跟.solverstate,並提到caffemodel裡存了各層的參數,因此可以拿來做可視化用

沒有留言:

張貼留言