caffe学习笔记17-find-tuning微调学习
find-tuning:
? ? ? ? 對已有模型進行find-tuning(softmax層的變動,只需要微調),比如我們現在有一個1000類的分類模型,但目前我們的需求僅是20類,此時我們不需要重新訓練一個模型,只需要將最后一層換成20類的softmax層,然后使用已有數據對原模型進行fine-tuning即可。
1.Fine-tuning微調(train + solver.prototxt + caffemodel)?
? # 微調 CaffeNet 模型的權值以完成風格識別任務(style recognition)./build/tools/caffe train -solver examples/finetuning_on_flickr_style/solver.prototxt?-weights models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel
? ? ? ? 注:(變動的層fc8需要改名字,不然還是原來的參數,caffenet結構的輸出層的類別數一定要大于我訓練集的類別數才可以收斂!)
? ? ? ? 比如原來我把圖像類別的label設置成1,2,3,改成0,1,2后,最后全連接層的轉出改成3就OK了。
2.style recognition調參策略
? ?1) we will change the name of the last layer form fc8 to fc8_flickr in our prototxt, it will begin training with random weights.
? ? 2)decrease base_lr(初始學習率,在train_val.protxt文件值中) and boost the lr_mult(局部學習倍率,conv和fc層才有) on the newly introduced layer(fc8_flickr).
? ? 3)set stepsize(solver.prototxt,迭代多少次就下降一次學習率) to a lower value. So the learning rate to?Go?down faster
? ? 4)So in the solver.prototxt,we can find the base_lr is 0.001 from 0.01,and the stepsize is become to 20000 from 100000.(重要)
? ? ? ? ? base_lr: 0.001~0.01 (不改小,loss容易輸出non)
? ? ? ? ? lr_mult: w:10,b:20
? ? ? ? ? stepsize: 20000~100000
3.進行微調訓練分類時,loss一直是87.3365,可能的原因是:
1.標簽的問題:
? imagelist中,圖像分類的標簽label一定要從0開始,
? 分類層的 num_output 和 標簽的值域 不符合:
a. 要知道imagenet是進行1000類的分類任務,我自己的數據是一個二分類,就一定要把最后‘fc8’InnerProduct的分類層的num_output: 2原來是1000,這個設成自己label的類別總數就可以。?
b. 但是注意同時要修改train.prototxt和deploy.prototxt兩個網絡配置文件中的num_output
2.可能是學習率太高了?
? 另外如果是最初的迭代的loss很小,然后突然變成87.3365。如果是這樣,可以嘗試一下調低學習率,我開始學習率是0.1,后來調成了0.001,反正就是調小,可以多試幾次。
總結
以上是生活随笔為你收集整理的caffe学习笔记17-find-tuning微调学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: caffe学习笔记19-batchsiz
- 下一篇: caffe学习笔记18-image100