caffe finetune問題:按照網上的教程微調alexnet為什麼loss一直是87.3365?

關於caffe finetune問題:按照網上的教程微調alexnet為什麼loss一直是87.3365?

finetune的方法是:首先將data的source改成我自己的數據(CAVIAR資料庫),將最後一層(FC8)改名,所有FC8都改了,並調高了FC8層的學習率。finetune過程中,前面幾十次迭代loss是很小的數值,迭代一百多次就變成固定值87.3365。求大神指點!


其實這個問題不該在這裡問的...這個問題真的很容易知道哪裡有問題...你只要把loss層的輸入blob的內容輸出來看看就知道了...87.3365,這是個很特殊的數字...NAN經過SoftmaxWithLoss就產生了這個數字...所以就是你的FC8輸出全是NAN...具體為什麼是NAN,你說你前面迭代幾十次loss都是小數值,那基本上是學習率的問題了...把學習率調小一點重新訓練就知道行不行了...


首先,進行fine tuning,是需要已有的模型參數,在caffe中也就是caffemodel,來進行訓練的。

其次,在caffe中進行fine tuning,讀入的caffemodel中包含神經網路中各層的名字以及對應的參數,對應fine tuning需要調用的layer,其名稱與模型的描述文件中的描述是需要相同的,如此才能調用caffemodel當中的參數進行初始化;對於caffemodel中不存在的layer,caffe會根據網路描述文件中的初始化方法進行參數初始化。

第三,利用caffe進行fine tuning的時候,如果我們並沒有改變輸入圖片的尺寸、網路結構(包括最後分類器輸出的向量長度,也就是softmax之前得到的一個數組(在tf-slim中這個數組名字通常叫做Logits)),那麼意味著我們可以直接調用上次訓練得到的caffemodel來優化模型,而一旦我們修改了上述兩個內容之一,模型的參數尺寸就會發生變化,此時進行fine tuning需要對caffemodel或是模型描述文件進行修改,否則caffe會因為參數尺寸的不匹配而報錯。

這意味著,在fine tuning過程中,我首先需要判斷的是模型在這個過程中是否需要修改,譬如提高圖片的輸入解析度,分類數量是否有變化,是否為了提高模型性能修改了網路結構或者增大了某一層的深度。

當這些都確認沒有問題後,我才會考慮超參的問題。因為在實際的訓練過程中,絕大多數數據都不會使模型因為超參的設置不合理而崩潰,只不過是收斂的難度和速度容易受到影響。

87.3365這個數字的上限我倒不是很明白,我猜測可能來源是由於分類數目大於logits向量的長度,對於多出來的類別會默認logit為0,那麼對屬於第n類的樣本進行訓練時,損失(log 0)趨向於無窮大,而caffe(或者cudnn)當中為了防止出現這種情況添加了一個極小的正數,或者是直接強迫列印的時候輸出了min(87.3365, loss),然而我並沒有在caffe的源代碼里發現這種操作。


分類層的 num_output 和 標籤的值域 不符合:

a. 要知道imagenet是進行1000類的分類任務,我自己的數據是一個二分類,就一定要把最後『fc8』InnerProduct的分類層的num_output: 2原來是1000,這個設成自己label的類別總數就可以。
b. 但是注意同時要修改train.prototxt和deploy.prototxt兩個網路配置文件中的num_output

我按這個修改的,loss小了,之前也是87.3365


確實,這個問題一般思路是先調整學習率,一般是先從0.1開始,每一次由0.05,0.01,0.005,0.001.。。調小,如果一直都是這個數,就要考慮一下數據問題了!


你將數據的標籤改成從0開始,再試試


你可以把學習率降低試試。87.3365是一個很特殊的值。


最後的問題解決了么??我也有同樣的問題,試過回答中的方法都沒解決。謝謝!


檢查數據。


很負責任的告訴你,有可能出錯的地方太多了,扎紮實實把基礎學好你就不會來這問這種問題了。


在solver.prototxt 加clip_gradients設置,也許能解決。我在cifar10上試過,可以解。


把num_output改成自己的類別數

inner_product_param {

num_output: *


菜鳥一枚,想求教關於微調Alexnet的教程


loss出現87.3365,一般情況是在SoftmaxWithLoss層中,求loss時出現log(0),。樓主可以試著檢查一下你的訓練有沒有什麼錯誤。


我也是這樣,樓主解決了嗎?


推薦閱讀:

caffe SolverParameter中的iter_size參數什麼作用?
GTX1080/1070配置深度學習環境。求指導,剛入手~?
如何評價Facebook Training ImageNet in 1 Hour這篇論文?
如何看待賈揚清Caffe2go開源,手機就能訓練神經網路?

TAG:深度學習DeepLearning | Caffe深度學習框架 |