2011-08-18 86 views
0

我的數據集包括29個輸入和6個輸出。當我使用爲什麼newff()在我使用它的參數時無法正常工作!

net = newff(minmax(Pl),[14 12 8 6]); 

建立我的前饋MLP網絡和

net.trainParam.epochs=50; 
net=train(net,Pl,Tl); 

網絡訓練它不能學我的數據集和其誤差不會降低0.7以下,但是當我使用newff函數的參數是這樣的:

net=newff(minmax(Pl),[14 12 8 6],{'tansig' 'tansig' 'tansig' 'purelin'},'trainlm'); 

錯誤減少得非常快,它低於0.0001!不尋常的注意的是,當我只使用一個層,包括2個神經元使用以前的代碼:

net=newff(minmax(Pl),[2 6],{'tansig' 'purelin'},'trainlm'); 

的誤差低於0.2再次下降,這是值得懷疑! 請給我一些建議,幫助我知道什麼是區別:

net = newff(minmax(Pl),[14 12 8 6]); 

net=newff(minmax(Pl),[14 12 8 myANN.m],{'tansig' 'tansig' 'tansig' 'purelin'},'trainlm'); 

+0

您正在使用什麼版本的MATLAB?另外,不要使用這麼多的隱藏層。你需要一個,也許兩個。跨多層的Backprop不能很好地工作。 – kwatford

+0

你的輸入/目標數據的維度是什麼? – Amro

回答

0

我認爲第二個參數爲NEWFF(鏈接需要登錄)應該是目標向量,而不是隱藏層的大小(這是第三個參數)。

請注意,隱藏層的默認傳輸函數爲tansig,輸出層爲purelin,默認訓練算法爲trainlm

最後,請記住,如果您想獲得可重複的結果,則必須在每次運行開始時手動將隨機數生成器重置爲固定狀態。

+0

舊版本的'newff'使用了他正在使用的調用約定,所以他可能會有一個老版本的MATLAB。在一些這樣的版本中,默認教練是「traingdx」而不是「trainlm」,因此指定這可能會產生一些影響。 – kwatford

+0

@kwatord:感謝您指出了這一點(你確切知道什麼版本?BTW在最新版本中,'newff'完全被棄用)。要點是記住在每次運行之前以相同的方式播種隨機數生成器,如果你想比較訓練神經網絡的結果。 – Amro

相關問題