1. 程式人生 > >CNN訓練之fine tune

CNN訓練之fine tune

目的

深度卷積神經網路包含大量的引數,這就要求了我們需要大量的資料來訓練它。而針對特定的一個任務,往往只有少量資料集。在此背景下,微調網路,作為遷移學習的一種應用,很大程度上(並不是完全)解決了這個困難,比如可以先在ImageNetTinyImages資料集上訓練卷積神經網路,然後將學習到的特徵表述遷移到特定的影象分類任務,從而達到一個比較好的效果。但是當影象的特徵分佈相差較大時,單純的遷移學習就沒有那麼有效了,比如將ImageNet直接遷移到醫學影象上,就不能得到理想的效果。

微調訓練方案

用原始資料(一般為有標籤且數量足夠多)訓練得到一個比較好的CNN模型,然後逐漸增加目標資料在原始資料中的比例,迭代微調CNN模型。相比於直接用目標資料,此方法往往效果更好。

CAFFE上的實現

按需調節每一層的學習引數,一般為增大頂層的學習率,而減小(或設定為0)底層的學習率。在CAFFE中即修改網路配置檔案中的lr_mult和decay_mult兩個引數。
由於模型載入時是按照層的名字載入的,因此當我們修改修改某一層的結構時,就要修改該層的名字才能開始訓練,比如我們往往會修改最後一層的num_ouput,這樣最後一層就要修改名字。