天天看點

GoogLeNet模型的微調

我從零開始訓練了GoogLeNet模型。 但它沒有給我帶來希望的結果。 

作為替代,我想對我的資料集中的GoogLeNet模型進行微調。 有誰知道我應該遵循什麼步驟?

采納答案:

假設你正在嘗試做圖像分類。 這些應該是微調模型的步驟:

1.分類層

原始​​分類層"loss3/classifier"​​輸出1000個類的預測(它的​

​mum_output​

​設定為1000)。 您需要将其替換為具有适當​

​num_output​

​的新圖層。 替換分類層:

  1. 更改圖層的名稱(以便當您從caffemodel檔案讀取原始權重時,不會與此圖層的權重發生沖突)。
  2. 将​

    ​num_output​

    ​更改為您嘗試預測的正确數量的輸出類。
  3. 請注意,您需要更改所有分類圖層。 通常隻有一個,但是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模型的微調

繼續閱讀