2016-07-07 84 views
0

我開發了一個ANN BP的代碼來分類打鼾片段。我有10個輸入功能和1個隱藏層,有10個神經元和一個輸出神經元。我將1表示爲無打鼾,0表示爲打鼾部分。我有3000個網段,其中2500個是沒有打鼾的網段,標記爲1和500個打鼾網段,標記爲0.我已經將數據集分爲三組(70%的訓練,15%的驗證和15%的測試) 。人工神經網絡後向傳播測試

現在,在訓練網絡時,首先我洗牌訓練集並將打鼾和無打鼾的段混合在一起。所以,在我訓練了網絡之後,當我驗證它(僅通過前饋網絡)時,我發現它只能對其中的一個進行分類。讓我進一步澄清,假設在訓練集中最後一個元素是沒有打鼾(這是1)。所以,它爲最後一次輸出訓練網絡。然後在驗證階段,即使對於打鼾區段(它是0),它總是使輸出接近1。如果最後一個元素是打鼾(0),則會發生同樣的情況。然後它在驗證階段始終將輸出接近於0。

我該如何解決這個問題?爲什麼我的網絡不能記住先前段的輸出。它只能保存最後一段?我應該在網絡中改變什麼來解決它?

回答

0

這是一個分類問題,所以我建議你有兩個輸出神經元。一個輸出神經元是一個,如果片段是打鼾片段,另一個輸出神經元是-1,如果它不是打鼾片段,反之亦然,對於沒有打鼾的片段。這應該有助於網絡對它們進行分類。您還應該將輸入要素標準化到1到-1之間的範圍。這將有助於神經網絡更好地理解你的輸入。你可能也想看看使用softmax圖層作爲你的輸出。

您可能需要的另一件事是您可能需要向當前隱藏層添加另一個隱藏層或更多神經元。謝謝你@YuryEuceda這個建議。如果您還沒有偏好輸入,您可能還需要添加偏好輸入。

+0

它應該與0和1一起工作,與-1和1相同,問題在於神經元和聯會的數量在隱藏的laye河 –

0

我看到的問題是隱藏層中沒有足夠的神經元和sinapsis。請記住,直到現在還沒有這樣一種方法來精確計算隱藏層中的神經元數量,因此我們必須使用測試誤差方法。有跡象表明,你可以在下一環節檢查許多經驗公式

https://stats.stackexchange.com/questions/181/how-to-choose-the-number-of-hidden-layers-and-nodes-in-a-feedforward-neural-netw

+0

嗨,謝謝你的回答。問題不在隱藏層中。這是因爲我計算了每個時代的成本函數。它很好地降低了培訓中的成本功能。問題在於記憶一個標籤的先前權重(假設爲0)。當其他標籤假設(1)進入網絡時,它忘記了前一層的權重。它沒有找到一個最佳的權重來對它們進行分類。請讓我知道如何解決它。 – Odrisso