⑴ 求助,用matlab中的BP神經網路函數,但沒有trainglm
newff()這個函數是建立一個神經網路的函數,其中括弧裡面的參數含義依次是:輸入數據和輸出數據的范圍,隱含層神經元個數,傳遞函數設置像BP網編程這塊,需要先給出輸入和期望輸出的數據矩陣,然後newff函數建立網路,然後train函數訓練網路,在這個訓練中你需要設置一些訓練目標和訓練次數等參數,然後還有一個sim模擬函數,就是把新的樣本數據做為輸入,通過這個我們訓練好的網路判斷這個樣本所屬分類。因為我用BP網主要做的是分類的實驗,所以就從分類這塊給你說明了。學BP網路,我個人經驗是需要把BP的正向輸出和反向誤差修改權值閾值這個學習過程,自己先手算明白,然後自己編程序實驗,最後再用MATLAB的封裝函數NEWFF這些,你會發現NEWFF和我們自己理解的訓練過程還是有細微的差別的。
⑵ 在搭建神經網路的時候,如何選擇合適的轉移函數(
一般來說,神經網路的激勵函數有以下幾種:階躍函數 ,准線性函數,雙曲正切函數,Sigmoid函數等等,其中sigmoid函數就是你所說的S型函數。以我看來,在你訓練神經網路時,激勵函數是不輕易換的,通常設置為S型函數。如果你的神經網路訓練效果不好,應從你所選擇的演算法上和你的數據上找原因。演算法上BP神經網路主要有自適應學習速率動量梯度下降反向傳播演算法(traingdx),Levenberg-Marquardt反向傳播演算法(trainlm)等等,我列出的這兩種是最常用的,其中BP默認的是後一種。數據上,看看是不是有誤差數據,如果有及其剔除,否則也會影響預測或識別的效果。