1. 程式人生 > >【佔坑】Pre-train 與 Fine-tuning

【佔坑】Pre-train 與 Fine-tuning

Pre-train的model:

就是指之前被訓練好的Model, 比如很大很耗時間的model, 你又不想從頭training一遍。這時候可以直接download別人訓練好的model, 裡面儲存的都是每一層的parameter配置情況。(Caffe裡對於ImageNet的一個model, 我記得是200+M的model大小)。你有了這樣的model之後,可以直接拿來做testing, 前提是你的output的類別是一樣的。

如果不一樣咋辦,但是恰巧你又有一小部分的圖片可以留著做fine-tuning, 一般的做法是修改最後一層softmax層的output數量,比如從Imagenet的1000類,降到只有20個類,那麼自然最後的InnerProducet層,你需要重新訓練,然後再經過Softmax層,再訓練的時候,可以把除了最後一層之外的所有層的learning rate設定成為0, 這樣在traing過程,他們的parameter 就不會變,而把最後一層的learning rate 調的大一點,讓他儘快收斂,也就是Training Error儘快等於0. 

這就是我所理解的Fine-tuning和Pre-train的關係。