2015-09-18 35 views
2

我一直在玩千層麪一段時間,現在使用卷積神經網絡的二元分類問題。然而,雖然我得到了良好(ish)的訓練和驗證損失結果,但我的驗證和測試精度始終保持不變(網絡始終預測同一類別)。用千層麪卷積神經網絡的準確性(迴歸與分類)

我碰到過this,這個人和我一樣有烤寬麪條的問題。他們的解決方案是設置regression=True,因爲他們在烤寬麪條上使用Nolearn。

有沒有人知道如何在千層麪內設置相同的變量(因爲我不想使用Nolearn)?除此之外,有沒有人有解釋爲什麼這需要發生?

+0

爲什麼你不想使用nolearn有一個特別的原因嗎? –

+0

沒有特別的原因,除了它似乎增加了另一層頂端的千層麪,林不知道是必要的。你認爲它增加了更多功能嗎?另外我覺得好像調試起來可能會更困難? – mjacuse

+0

IMO nolearn添加了很好的功能,如BatchIterator,我用它進行大量預處理(隨機裁剪數據等)。自從我開始使用nolearn後,我還沒有發現更難調試。但這是個人觀點。 –

回答

0

從nolearn看the code of the NeuralNet class,它看起來像參數regression在不同的地方使用,但大多數時候它影響如何計算輸出值和損失。

regression=False(默認值)的情況下,網絡輸出具有最大概率的類,並使用分類交叉熵計算損失。另一方面,在regression=True的情況下,網絡輸出每個類的概率,並且計算輸出向量上的平方誤差的損失。

我不是深度學習和CNN方面的專家,但是這可能起作用的原因是,如果是regression=True,並且如果存在小的錯誤梯度,對網絡參數應用較小的更改可能不會改變預測的類和相關的損失,並可能導致算法「認爲」它已經收斂。但是如果你看看類別概率,小的參數變化將影響概率和結果的均方誤差,並且網絡將沿着這條路徑繼續下去,這可能最終改變預測。

這只是一個猜測,很難說沒有看到代碼和數據集。