日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > Caffe >内容正文

Caffe

DL开源框架Caffe | 模型微调 (finetune)的场景、问题、技巧以及解决方案

發布時間:2024/4/17 Caffe 242 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DL开源框架Caffe | 模型微调 (finetune)的场景、问题、技巧以及解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://blog.csdn.net/u010402786/article/details/70141261

前言

什么是模型的微調?

  ?
  使用別人訓練好的網絡模型進行訓練,前提是必須和別人用同一個網絡,因為參數是根據網絡而來的。當然最后一層是可以修改的,因為我們的數據可能并沒有1000類,而只有幾類。把最后一層的輸出類別和層的名稱改一下就可以了。用別人的參數、修改后的網絡和自己的數據進行訓練,使得參數適應自己的數據,這樣一個過程,通常稱之為微調(fine tuning).?

微調時候網絡參數是否更新?

 ?
  更新,finetune的過程相當于繼續訓練,跟直接訓練的區別是初始化的時候:?
   a. 直接訓練是按照網絡定義指定的方式初始化(如高斯隨機初始化)?
  b. finetune是用你已經有的參數文件來初始化(就是之前訓練好的caffemodel)

?


**第一部分:Caffe命令行解析** —————

一、訓練模型代碼

  腳本:

./build/tools/caffe train -solver models/finetune/solver.prototxt -weights models/vgg_face_caffe/VGG_FACE.caffemodel -gpu 0

  BAT命令:  

..\..\bin\caffe.exe train --solver=.\solver.prototxt -weights .\test.caffemodel pause
二、caffe命令全解析

  http://www.cnblogs.com/denny402/p/5076285.html


第二部分:微調參數調整示例

一、各類模型finetune示例

Caffe finetune Resnet-50

http://blog.csdn.net/tangwenbo124/article/details/56070322

Caffe finetune googlenet

http://blog.csdn.net/sinat_30071459/article/details/51679995

Caffe finetune FCN

http://blog.csdn.net/zy3381/article/details/50458331

Caffe finetune Alexnet

                 

二、參數調整注意
  • 首先修改名字,這樣預訓練模型賦值的時候這里就會因為名字不匹配從而重新訓練,也就達成了我們適應新任務的目的;
  • 調整學習速率,因為最后一層是重新學習,因此需要有更快的學習速率相比較其他層,因此我們將,weight和bias的學習速率加快10倍,目的是讓非微調層學習更快;
  • finetune時將最后的全連接層的名字全部修改,需要根據自己數據集的類別數重新設置fc8層的output數;
  • 數據集的類別號從0開始,中間要連續,否則會造成意外的錯誤
  • 數據集記得打亂,不然很可能不收斂;
  • 如果出現不收斂的問題,可以把solver里的lr設的小一點,一般從0.01開始,如果出現loss=nan了就不斷往小調整;
  • 可以把accuracy和loss的曲線畫出來,方便設定stepsize,一般在accuracy和loss都趨于平緩的時候就可以減小lr了;
  • finetune時應該用自己的數據集生成的均值文件(是否正確?);

第三部分:fine-tune的選擇經驗

  在fine-tune時,究竟該選擇哪種方式的Transfer Learning?需要考慮的因素有許多,其中最重要的兩條是新數據庫的規模和它與預訓練數據庫的相似程度,根據這兩條因素的不同配置,存在四種場景:?
  ?
  新數據庫小,和預訓練數據庫相似。因為數據庫比較小,fine-tune的話可能會產生過擬合,比較好的做法是用預訓練的網絡作為特征提取器,然后訓練線性分類器用在新的任務上。?
  新數據庫比較大,和預訓練數據庫相似。這種情況下,不用擔心過擬合,可以放心地微調整個網絡。?
  新數據庫小,和預訓練數據庫不相似。這時,既不能微調,用預訓練網絡去掉最后一層作為特征提取器也不合適,可行的方案是用預訓練網絡的前面幾層的激活值作為特征,然后訓練線性分類器。?
  新數據庫大,和預訓練數據庫不相似。這時可以從頭開始訓練,也可以在預訓練的基礎上進行微調。?
  ?
  ?
  綜述:做freeze操作時,通常還會根據數據集在不同情況進行有選擇的性的finetune。如small datasets時,可以freeze前面conv layer-> fc4086來提取cnn在imagenet上的多類泛化特征來輔助作為分類的feature,再對如這邊revise的fc-20->softmax進行training。以此類推,如果是medium datasets則freeze到一半的conv。個人理解這樣做的很大原因在于lower level layer具有更強泛化的basic feature,同時記得考量你的數據來選擇。


第四部分:如何針對上述不同的方式進行網絡參數固定

比如有4個全連接層A->B->C->D:?

  a. 你希望C層的參數不會改變,C前面的AB層的參數也不會改變,這種情況也就是D層的梯度不往前反向傳播到D層的輸入blob(也就是C層的輸出blob 沒有得到梯度),你可以通過設置D層的lr_mult: 0,layer的梯度就不會反向傳播啦,前面的所有layer的參數也就不會改變了。?
  b. 你希望C層的參數不會改變,但是C前面的AB層的參數會改變,這種情況,只是固定了C層的參數,C層得到的梯度依然會反向傳播給前面的B層。只需要將對應的參數blob的學習率調整為0:?
  在layer里面加上param { lr_mult: 0 }就可以了,比如全連接層里面:

layer {type: "InnerProduct"param { # 對應第1個參數blob的配置,也就是全連接層的參數矩陣的配置lr_mult: 0 # 學習率為0,其他參數可以看caffe.proto里面的ParamSpec這個類型 } param { # 對應第2個參數blob的配置,也就是全連接層的偏置項的配置 lr_mult: 0 # 學習率為0 } }

第五部分:Caffe fine-tune常見問題

一、按照網上的教程微調alexnet,為什么loss一直是87.3365?

  解決辦法:檢查數據集的標簽是否是從0開始,base_lr調低了一個數量級,batch_size調高一倍。?
  ?
  出現的原因:87.3365是個很特殊的數字,NAN經過SoftmaxWithLoss就產生了這個數字,所以就是你的FC8輸出全是NAN;?
  ?
  具體分析:?
  http://blog.csdn.net/jkfdqjjy/article/details/52268565?locationNum=14

二、Loss下降了,但是準確率沒有明顯變化?

  解決辦法:訓練前首先shuffle,其次學習率是否合適。

三、Data augmentation 的技巧總結:

轉自小白在閉關?https://www.zhihu.com/question/35339639

圖像亮度、飽和度、對比度的變化;?
PCA Jittering?
Random resize?
Random crop?
Horizontal/vertical filp?
旋轉仿射變換?
加高斯噪聲、模糊處理?
Label shuffle:類別不平衡數據的擴增,參見海康威視ILSVRC2016的report

               

四、如何通過loss曲線判斷網絡訓練的情況:

  單獨的 loss 曲線能提供的信息很少的,一般會結合測試機上的 accuracy 曲線來判斷是否過擬合;?
  關鍵是要看你在測試集上的acc如何;?
  如果你的 learning_rate_policy 是 step 或者其他變化類型的話, loss 曲線可以幫助你選擇一個比較合適的 stepsize;

?

五、finetune_net.bin不能用之后,用新的方法做finetune會出問題,怎么解決??

  ?
  給最后那個InnerProduct層換個名字。

?


第六部分:參考資料

1.http://caffe.berkeleyvision.org/gathered/examples/finetune_flickr_style.html?
2.https://www.zhihu.com/question/54775243?
3.http://blog.csdn.net/u012526120/article/details/49496617?
4.https://zhidao.baidu.com/question/363059557656952932.html

Caffe調參

一般fine tuning的方式,都是把learning rate(solver.prototxt)調低(為原來的十分之一),之后把訓練模型的最后一層或者兩層的學習速率調大一點————這就相當于,把模型的前面那些層的學習調低,使得參數更新的慢一點以達到微調的目的。但有可能會導致整個收斂速度變慢,因此還需要增加最大迭代次數。
關于調參,個人感覺很多時候都是經驗,在這個情景下,增加一個模塊效果是好的,在另一個場景可能就是不好的。沒有一個很好的理論支持你,應該怎么調整。簡單來講就是修改學習速率、batchsize等參數。
需要調節的參數(solver.prototxt)主要包括:
base_lr:初始學習率,這個是非常重要的一個參數;momentum:一般設置為0.9,如果base_lr特別低的話也可以設置為0.99或0.999等 weight_decay:默認0.005,可以適當調整,類似于正則化項;
lr_policy:學習率變化策略,常見的有fixed(固定), inv,step等,詳細的說明見http://stackoverflow.com/questions/30033096/what-is-lr-policy-in-caffe
最后如果loss出現不收斂的情況,可以嘗試一下以下幾種方法:

  • 調小solver里的初始學習率
  • 數據量小的話,可以只對最后幾層的權重進行調整,前面權重保持不變,即把前面的學習率置為0,一定程度上限制了激活的大小,這樣就限制了某一過大的誤差的影響,這樣可以避免迭代方向出現過大的變化。
  • 在GPU可承受的范圍內調大batch_size的大小(賈揚清的解釋:理論上batch小是不會影響收斂的。小batch主要的問題是在FC層的計算可能會不是很efficient,如果實在無計可施,可以試試 ;網上其他博主的解釋:batch比較小 ,導致樣本覆蓋面過低,產生了非常多的局部極小點,在步長和方向的共同作用下,導致數據產生了震蕩,導致了不收斂 )
  • 總而言之,一般策略是先試一試參數,把display設小一點,多看看結果,找到合適的參數,再整個跑。這里有幾篇關于調參的論文(),可以看一下,基于理解和有合理解釋的調參才不會變為無意義的工作。

    http://bealin.github.io/2016/10/23/Caffe%E5%AD%A6%E4%B9%A0%E7%B3%BB%E5%88%97%E2%80%94%E2%80%943Fine-tuning%E5%BE%AE%E8%B0%83%E7%BD%91%E7%BB%9C/

    轉載于:https://www.cnblogs.com/JZ-Ser/p/7248316.html

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的DL开源框架Caffe | 模型微调 (finetune)的场景、问题、技巧以及解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: www.youjizz.com亚洲 | 成人免费毛片糖心 | 乌克兰做爰xxxⅹ性视频 | 双乳被四个男人吃奶h文 | 欧美xxxxx牲另类人与 | 69日影院| 成人午夜免费福利 | 午夜视频在线观看一区 | 亚洲一区二区三区免费看 | 素人女裸体 | 波多野结衣一区 | 毛片内射 | 四虎国产在线观看 | 久久大胆视频 | 欧美日韩国产免费一区二区三区 | 人人射人人插 | 91pao| 51妺嘿嘿午夜福利 | 国产粉嫩白浆 | 欧美日韩国产中文字幕 | 亚洲男女视频在线观看 | 欧美三级欧美成人高清 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 日本一区二区高清视频 | 男人天堂av网 | 在线精品亚洲欧美日韩国产 | 澳门av在线| 字幕网av | 黄色小视频免费在线观看 | 99re在线国产 | 超碰婷婷 | 国产一级做a爰片久久毛片男 | 婷婷丁香激情五月 | 在线视频一二区 | 丰满岳乱妇在线观看中字无码 | 极品丰满少妇 | 日韩av福利 | caoporn超碰97 | 国产a精品| 国产一卡二卡在线播放 | 中文字幕一区二区三区夫目前犯 | 欧美激情精品久久久久久蜜臀 | av资源导航 | 日韩av在线第一页 | 在线91视频 | 日日干干 | 亚洲熟妇无码av | 亚洲精品中文字幕乱码三区 | 日本不卡一区二区在线观看 | 亚洲一区二区三区在线视频观看 | 精品无码国产av一区二区三区 | 久久久一级黄色片 | 五月深爱婷婷 | 噜噜狠狠狠狠综合久久 | 91色视频| 韩国视频一区二区三区 | 国产一区二区中文字幕 | 一区二区啪啪啪 | 麻豆成人在线观看 | 国产激情免费视频 | 一本在线| 黄色在线观看免费 | 欧美日本高清视频 | 91桃色免费视频 | 视频在线一区二区 | 91在线影院| 亚洲天堂手机在线观看 | 麻豆偷拍 | 国产精品男同 | 欧美极品在线视频 | 欧美亚洲在线观看 | 日本特黄网站 | 中文字幕av无码一区二区三区 | 日本色片网站 | 天天干在线播放 | 久久青青草原亚洲av无码麻豆 | 91福利免费 | 国产精品一区二区亚洲 | 美女视频久久 | 久久精品2| 亚洲一区二区三区激情 | 国产熟女高潮一区二区三区 | 久久久精品在线 | 国产91一区二区三区 | 老妇荒淫牲艳史 | 超碰人人网 | 三浦理惠子av在线播放 | 日本成人一级片 | 美女视频黄的免费 | 中文在线天堂网 | 性中国xxx极品hd | 亚洲黄色片免费看 | 国产69久久 | 亚洲综合成人网 | 怡春院国产 | 免看一级a毛片一片成人不卡 | 福利姬在线观看 | 日本女人毛片 | 九色在线|