我從零開始訓練了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模型的微調