2015-09-27 22 views
1

我在我自己的數據集上微調caffenet。 我已經在flickr樣式數據集上成功完成了它, ,所以我修改了solver和train_val prototxt文件以指向我的數據集,並使用新的輸出維度(= 100個類)。數據層預取隊列空然後丟失0

我的數據集的大小是1.88M訓練圖像,和.48M圖像進行測試。

當我開始訓練,它停下來顯示

... blocking_queue.cpp:50] Data layer prefetch queue empty 

了一會兒,然後進行如下:

... solver.cpp:414]  Test net output #0: accuracy = 0.0002 
... solver.cpp:414]  Test net output #1: loss = 5.6139 (* 1 = 5.6139 loss) 
... solver.cpp:242] Iteration 0, loss = 7.23329 
... solver.cpp:258]  Train net output #0: loss = 7.23329 (* 1 = 7.23329 loss) 
... solver.cpp:571] Iteration 0, lr = 0.001 
... solver.cpp:242] Iteration 20, loss = 0 
... solver.cpp:258]  Train net output #0: loss = 0 (* 1 = 0 loss) 
... solver.cpp:571] Iteration 20, lr = 0.001 
... solver.cpp:242] Iteration 40, loss = 0 
... solver.cpp:258]  Train net output #0: loss = 0 (* 1 = 0 loss) 
... solver.cpp:571] Iteration 40, lr = 0.001 

等。顯然,根本沒有計算損失。奇怪的是,第0次迭代的初始損失看起來不錯。

顯然,數據未正確加載。我正在使用文本文件列出文件路徑及其標籤。

我正在使用softmax損失。

我試過把初始學習速率降低到1/10,但沒有變化。

**編輯:我試過最初的學習率1/1000。最初它似乎工作。經過約300次迭代後,其損失再次迅速下降,準確度達到100%,表明有可能再次出現問題。症狀出現在caffenet和VGG。

有什麼想法可能會出錯?

回答

1

問題在於用於訓練和測試數據的文本文件沒有被洗牌,而是被排序。因此,只對相同類別的圖像進行測試,並且也從相同類別的圖像中學習參數,從而非常快速地達到100%的準確度。