下列是過去十天我用各種技巧訓練的模型,
只要該技巧對 val acc 或 val loss 有勝過 EFN_base,
那我就會將其納入最後的模型實驗。
恭喜三種不同的learning rate decay和dropout入圍最終實驗!
恭喜nStepsToAll、nStepsToBlock7、class weight、image augmentation入圍最終實驗!
好了,那最後我到底做了哪些參數組合呢?
參數 | 參數空間 | 長度 |
---|---|---|
LR decay | step decay, poly decay ,exp decay,RLOP, None | 5 |
Optimizer | SGD, Adam | 2 |
unfreeze last n layers | 6, 19, 78, 1000(all) | 4 |
class weights | balance, origin | 2 |
epochs | 100 | 1 |
batch size | 128 | 1 |
5*2*4*2*1*1 = 80
難道我真的要訓練出80個模型嗎?
其實也不用,
因為我在前幾個模型訓練出來就發現:
只有unfreeze到最後78層的訓練效果不好,我果斷地把unfreeze last n layers
通通設為1000(剩下20個組合)
然後我發現SGD不管搭配哪種decay都收斂很慢,100輪內絕對贏不了Adam (剩下10個組合)
接下來基本就是學習率衰減
和類別權重
的比較了。
最後勝出的參數組合如下:
參數 | 參數空間 |
---|---|
LR decay | poly decay |
Optimizer | Adam |
unfreeze last n layers | 1000(all) |
class weights | balance |
epochs | 100 |
batch size | 128 |
我最終的準確率是0.6500,
排在第5名的位置,
剛好晉升Gold階級的最後一名 :D
我在網路上看到有人修改VGG的架構,
搭配上cosine decay和SGD Nesterov,
用二階段訓練了300輪+50輪,
最後達到73.2%準確率。
看來我還有一段很長的路要走...
現在回想起來我還有很多地方可以修改,
但是實務上根本不會有這麼多時間給你開發演算法QQ
就像這個30天的專案一樣,
到底最後不到10天能不能做出App呢?
敬請期待!