我從零開始訓練了GoogLeNet模型。 但它沒有給我帶來希望的結果。
作為替代,我想對我的資料集中的GoogLeNet模型進行微調。 有誰知道我應該遵循什麼步驟?
採納答案:
假設你正在嘗試做影像分類。 這些應該是微調模型的步驟:
1.分類層
原始分類層"loss3/classifier"
輸出1000個類的預測(它的mum_output
設定為1000)。 您需要將其替換為具有適當num_output
的新圖層。 替換分類層:
- 更改圖層的名稱(以便當您從caffemodel檔案讀取原始權重時,不會與此圖層的權重發生衝突)。
- 將
num_output
更改為您嘗試預測的正確數量的輸出類。 - 請注意,您需要更改所有分類圖層。 通常只有一個,但是GoogLeNet碰巧有三個:
"loss1/classifier"
,"loss2/classifier"
和"loss3/classifier"
。
2.資料
您需要建立一個新的訓練資料集,其中包含您想要調整的新標籤。 例如,請參閱這篇文章 ,瞭解如何製作lmdb資料集。
3.你想要進行多少廣泛的調諧?
微調模型時,可以訓練所有模型的權重,或者選擇修正一些權重(通常是較低/較深層次的過濾器),並僅訓練最頂層的權重。 這個選擇取決於你,它通常取決於可用的訓練資料量(更多的例子你可以承受更多的權重,可以進行微調)。
每個圖層(包含可訓練引數)都有param { lr_mult: XX }
。 這個係數決定了這些權重對SGD更新的敏感程度。 設定param { lr_mult: 0 }
意味著你修改這個圖層的權重,並且在訓練過程中它們不會被改變。
相應地編輯您的train_val.prototxt
。
4.執行咖啡
執行caffe train
但提供caffemodel的重量作為初始重量:
~$ $CAFFE_ROOT/build/tools/caffe train -solver /path/to/solver.ptototxt -weights /path/to/orig_googlenet_weights.caffemodel
更多答案請參考GoogLeNet模型的微調。版權歸stackoverflow所有,轉載請保留此連結 GoogLeNet模型的微調
更多關於caffe 的細節,關注徐其華大神的系列部落格,寫得非常詳細。
連結:http://www.cnblogs.com/denny402/tag/caffe/