caffe模型訓練小技巧

2021-08-10 09:37:55 字數 828 閱讀 1802

一、學習率調整

乙個對於排程學習率的建議:如果在驗證集上效能不再增加就讓學習率除以2或者5,然後繼續,學習率會一直變得很小,到最後就可以停止訓練了

二、finetun微調

finetune的過程相當於繼續訓練,跟直接訓練的區別是初始化的時候:

a. 直接訓練是按照網路定義指定的方式初始化(如高斯隨機初始化)

b. finetune是用你已經有的引數檔案來初始化(就是之前訓練好的caffemodel)

微調有兩種情況:比如有4個全連線層a->b->c->d

(1)希望c層的引數不會改變,c前面的ab層的引數也不會改變,這種情況也就是d層的梯度不往前反向傳播到d層的輸入blob(也就是c層的輸出blob 沒有得到梯度),可以通過設定d層的propagate_down為false來做到。

propagate_down的數量與輸入blob的數量相同,假如你某個層有2個輸入blob,那麼應該在該layer的param裡面寫上兩行:

propagate_down : 0 # 第1個輸入blob不會得到反向傳播的梯度

propagate_down : 0 # 第2個輸入blob不會得到反向傳播的梯度

這樣的話,你這個layer的梯度就不會反向傳播啦,前面的所有layer的引數也就不會改變了

(2)希望c層的引數不會改變,但是c前面的ab層的引數會改變,這種情況,只是固定了c層的引數,c層得到的梯度依然會反向傳播給前面的b層。只需要將對應的引數blob的學習率調整為0:

你在layer裡面加上param 就可以了,比如全連線層裡面:

layer

param

}未完待續。。。。

深度學習模型訓練小技巧

這篇文章主要介紹一些在深度學習模型訓練時的一些小技巧。warmup可以理解為預熱 熱身的意思,它的思想是一開始以較小的學習率去更新引數,然後逐步提高學習率。這樣的好處是 有助於減緩模型在初始階段對mini batch的提前過擬合現象,保持分布的平穩 有助於保持模型深層的穩定性。線性warmup nu...

caffe模型訓練batch size設定

batch size 批尺寸 是機器學習中乙個重要引數,涉及諸多矛盾,下面逐一展開。batch 的選擇,首先決定的是下降的方向。如果資料集比較小,完全可以採用全資料集 full batch learning 的形式,這樣做至少有 2 個好處 其一,由全資料集確定的方向能夠更好地代表樣本總體,從而更準...

模型訓練技巧(待續)

批訓練 batch trainning 一次訓練一批 比如50個 樣本,在nn或cnn中,對一批樣本在同相同引數的網路上進行前向過程和誤差傳導過程,然後把梯度求和加更新網路引數。優點 訓練速度可也更快,同批中的各樣本可並行訓練。dropout 模型訓練的時候隨機讓某些權重不更新。優點 為了防止過擬合...