2014-04-07 159 views
0

最近,我嘗試使用Matlab內置神經網絡工具箱來完成我的分類問題。但是,我對參數設置有一些疑問。使用Matlab進行神經網絡分類的參數設置

a。隱藏層中神經元的數量:

該頁面上的示例Matlab neural networks classification example示出了兩層(即,一個隱藏層和一個輸出層)前饋神經網絡。在這個例子中,它使用10元隱藏層

net = patternnet(10); 

我的第一個問題是如何界定的神經元的數量最好爲我的分類問題?我應該使用交叉驗證方法來使用訓練數據集來獲得最佳數量的神經元嗎?

b。有沒有一種方法可以選擇三層或更多的多層神經網絡?

c。我們可以在神經網絡工具箱中使用許多不同的訓練方法。列表可以在Training methods list找到。該網頁提到最快的訓練功能通常是'訓練';但是,一般來說,哪一個表現最好?或者完全取決於我使用的數據集? d)。在每種訓練方法中,都有一個名爲'epochs'的參數,這是我理解的訓練迭代。對於每種訓練方法,Matlab都定義了訓練時間的最大數目。然而,從example,它似乎是'時代'是我們可以調整的另一個參數。我對嗎?或者我們只設置最大數量的紀元或將其保留爲默認值?

任何使用Matlab神經網絡工具箱的經驗都是值得歡迎的,非常感謝您的回覆。 A.

回答

0

a。你可以參考How to choose number of hidden layers and nodes in neural network?ftp://ftp.sas.com/pub/neural/FAQ3.html#A_hu
當然,你可以做交叉驗證來確定最佳數量的神經元的參數。但不推薦使用它,因爲它更適合在特定網絡的權重訓練階段使用它。

b。參考ftp://ftp.sas.com/pub/neural/FAQ3.html#A_hl
對於更多的神經網絡層,您可以參考Deep Learning,這是近年來非常熱門的並且在許多模式識別任務中獲得了最先進的性能。

c。這取決於你的數據。在訓練大型網絡和模式識別網絡時,trainlm在函數擬合(非線性迴歸)問題上比在模式識別問題上表現更好,trainscg和trainrp是很好的選擇。通常建議使用漸變下降和彈性反向傳播。更詳細的比較可以在這裏找到:http://www.mathworks.cn/cn/help/nnet/ug/choose-a-multilayer-neural-network-training-function.html

d。你是對的。我們可以調整時代參數。一般來說,您可以輸出每個時代的識別結果/精確度,並且您會看到它的推廣速度越來越慢,越多的時代計算時間越多。您可以在準確性和計算時間之間做出妥協。

0

對於部分b你的問題: 您可以使用這樣的代碼:

net = patternnet([10 15 20]); 

該腳本創建與第一層有10個神經元3隱層的網絡,第二層有15個​​神經元和第3層有20個神經元。