⑴ 我的BP神經網路訓練一直達不到要求,要怎樣修改才能達到要求
net=init(net);不用這一句,把『logsig『改成「tansig」,第一個,同樣,把第二個改成』purelin『
建議你把』trainrp『改成』trainlm「,試試!
⑵ 一個關於BP神經網路的問題,matlab中神經網路工具箱的初始權值和閥值是
訓練BP神經網路所採取的隨機初始參數確實是隨機的,在訓練過程中這些參數和權值都會朝著同一個大方向進行修正。例如你用BP神經網路來擬合曲線,找到輸入值與輸出值之間的線性規律,那麼在訓練的過程中這個擬合的曲線會不斷的調整其參數和權值直到滿足幾個預設條件之一時訓練停止。雖然這個訓練出來的結果有時候會有一定誤差,但都在可以接受的范圍內。
縮小誤差的一個方法是需要預先設置初始參數,雖然每次依然會得到不一樣的模型(只要參數是隨機修正的),但不同模型之間的差距會很小。另外可以反復訓練,找到一個自己覺得滿意的模型(可以是測試通過率最高,可以是平均結果誤差值最小)。
至於你說別人怎麼檢查你的論文結果,基本上都是通過你的演算法來重建模型,而且還不一定都用matlab來做,即便是用同樣的代碼都會出現不同的結果,何況是不同的語言呢?其實驗算結果最重要的是看測試時的通過率,例如在對一組新的數據進行測試(或預測)時,通過率達到95%,別人用其他的方式重建了你的模型也得到這樣的通過率,那麼你的演算法就是可行的。注意,在計算機專業的論文裡面大家看重的不是代碼,而是演算法。
補充一點:只要你訓練好了一個神經網路可以把這個神經網路以struct形式保存,這樣這個網路可以被反復使用,且每次對同一組測試數據的預測結果都會一樣。你也可以當做是檢測論文可行性的工具。
⑶ BP神經網路中初始權值和閾值的設定
首先需要了解BP神經網路是一種多層前饋網路。以看一下在matlab中BP神經網路的訓練函數,有梯度下降法traingd,彈性梯度下降法trainrp,自適應lr梯度下降法traingda等。
因為初始值(初始權值和閥值)都在x這個向量中,x(n,1)的長度n為:n=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum
其中inputnum*hiddennum是輸入層到隱含層的權值數量,hiddennum是隱含層神經元個數(即隱含層閥值個數),hiddennum*outputnum是隱含層到輸出層權值個數,outputnum是輸出層神經元個數(即輸出層閥值個數)。
結構
BP網路是在輸入層與輸出層之間增加若干層(一層或多層)神經元,這些神經元稱為隱單元,它們與外界沒有直接的聯系,但其狀態的改變,則能影響輸入與輸出之間的關系,每一層可以有若干個節點。
BP神經網路的計算過程由正向計算過程和反向計算過程組成。正向傳播過程,輸入模式從輸入層經隱單元層逐層處理,並轉向輸出層,每~層神經元的狀態隻影響下一層神經元的狀態。如果在輸出層不能得到期望的輸出,則轉入反向傳播,將誤差信號沿原來的連接通路返回,通過修改各神經元的權值,使得誤差信號最小。
以上內容參考:網路-BP神經網路
⑷ BP神經網路的Training Parameters中各個參數都是什麼意思啊
max_fail 最大失敗步數,如設置為100,則訓練到100步還沒成功也會停止訓練
mem_rec
min_grad 最小梯度,梯度下降法中出現,設置一個值之後,如果訓練下降梯度不達此值訓練也只能停止
mu 參數μ
mu_dec
mu_inc
mu_max
show 顯示步數,如果設為50,則運行後會每隔50步顯示一下運行結果
time 訓練時間限制,同max_fail,min_grad 作用一樣
⑸ BP神經網路中隱藏層節點個數怎麼確定最佳
神經網路演算法隱含層的選取:構造法,刪除法,黃金分割法。
首先在[a,b]內尋找理想的隱含層節點數,這樣就充分保證了網路的逼近能力和泛化能力,為滿足高精度逼近的要求,再按照黃金分割原理拓展搜索區間;
即得到區間[b,c](其中b=0.619*(c-a)+a),在區間[b,c]中搜索最優,則得到逼近能力更強的隱含層節點數,在實際應用根據要求,從中選取其一即可。
計算過程
BP神經網路的計算過程由正向計算過程和反向計算過程組成。正向傳播過程,輸入模式從輸入層經隱單元層逐層處理,並轉向輸出層,每一層神經元的狀態隻影響下一層神經元的狀態。如果在輸出層不能得到期望的輸出,則轉入反向傳播,將誤差信號沿原來的連接通路返回,通過修改各神經元的權值,使得誤差信號最小。
以上內容參考:網路-BP神經網路
⑹ MATLAB神經網路BP,誤差超大,怎樣調試是誤差更接近目標值主要調試哪些參數謝謝。。。
被推薦的答案倒是沒說錯,基本上和沒說一樣…… 就好比問怎麼安排時間,回答一個「合理安排時間」……
誤差大,第一步需要嘗試的是做歸一化處理。有線性歸一化,有對數函數歸一化等等,這個你可以去網上搜索數據歸一化方法,有相關的代碼,應該。
第二部需要做出的改動是隱層節點數量,如果節點數量太多,那麼結果的隨機性就會很大,如果太少,那麼復雜數據的規律計算不出來。多少層節點最合適,這個目前除了一個一個試沒有更好的辦法。但是你會發現每一個相同的結構計算出的結果卻不盡相同,這個時候就需要考慮後續的問題。
第三步嘗試,變換transfer function。麻煩你查查字典,因為我不是用中文學的神經網路。我姑且翻譯成傳輸函數。傳輸函數在matlab中內建了3中 pureline logsig tansig。分別有不同的應用范圍。因為沒看到你的數據,我也不清楚具體應該推薦你用哪一種。不過你可以去網上搜索一下三種傳輸函數的特點。
一般情況下,前三步已經可以解決問題了。
如果不行,那麼你需要嘗試的就是比較高級的內容了。嘗試一下,不行再追問。
⑺ BP神經網路 運行的步驟太少就停了,是參數設置的問題嗎
不是運行太少而停止,是達到了你的要求。
net.trainParam.goal=0.01;
精度調高點試下
⑻ BP神經網路模型各個參數的選取問題
樣本變數不需要那麼多,因為神經網路的信息存儲能力有限,過多的樣本會造成一些有用的信息被丟棄。如果樣本數量過多,應增加隱層節點數或隱層數目,才能增強學習能力。
一、隱層數
一般認為,增加隱層數可以降低網路誤差(也有文獻認為不一定能有效降低),提高精度,但也使網路復雜化,從而增加了網路的訓練時間和出現「過擬合」的傾向。一般來講應設計神經網路應優先考慮3層網路(即有1個隱層)。一般地,靠增加隱層節點數來獲得較低的誤差,其訓練效果要比增加隱層數更容易實現。對於沒有隱層的神經網路模型,實際上就是一個線性或非線性(取決於輸出層採用線性或非線性轉換函數型式)回歸模型。因此,一般認為,應將不含隱層的網路模型歸入回歸分析中,技術已很成熟,沒有必要在神經網路理論中再討論之。
二、隱層節點數
在BP 網路中,隱層節點數的選擇非常重要,它不僅對建立的神經網路模型的性能影響很大,而且是訓練時出現「過擬合」的直接原因,但是目前理論上還沒有一種科學的和普遍的確定方法。 目前多數文獻中提出的確定隱層節點數的計算公式都是針對訓練樣本任意多的情況,而且多數是針對最不利的情況,一般工程實踐中很難滿足,不宜採用。事實上,各種計算公式得到的隱層節點數有時相差幾倍甚至上百倍。為盡可能避免訓練時出現「過擬合」現象,保證足夠高的網路性能和泛化能力,確定隱層節點數的最基本原則是:在滿足精度要求的前提下取盡可能緊湊的結構,即取盡可能少的隱層節點數。研究表明,隱層節點數不僅與輸入/輸出層的節點數有關,更與需解決的問題的復雜程度和轉換函數的型式以及樣本數據的特性等因素有關。
⑼ BP神經網路的mu參數是學習率么訓練結果val fail中的validation check=6什麼意思
神經網路的樣本若輸入網路,默認情況下會將樣本隨即分為3類:訓練樣本,確認樣本和測試樣本。確認檢查值默認是6,它的意思是指隨著網路利用訓練樣本進行訓練的過程中,確認樣本的誤差曲線連續6次迭代不在下降。這時訓練終止(這只是訓練終止條件之一,滿足任一終止條件,訓練過程都將終止)深層含義你可以這樣理解,如果隨著網路的訓練,確認樣本的誤差已經基本不在減小,甚至增大,那麼就沒有必要再去訓練網路了,因為繼續訓練下去的話,在利用測試樣本進行測試網路的話,測試樣本的誤差將同樣不會有所改善,甚至會出現過度擬合的現象。validation checks已經達到設置的值了,所以停止訓練了,如果網路在連續max_fail epochs後不能提高網路性能,就停止訓練。
有三種方法解決這個問題:
1 提高validation checks的數值,比如設置net.trainParam.max_fail = 200;其實這等於自己糊弄自己嚴重不推薦,出現停止訓練,就是因為被訓練的網路已經過擬合,停下來是應該的。但6的確有點小,建議改成10到20之間的數
2 修改被訓練的網路,比如說再加一個隱藏層試試
3 如果是數據太相近的問題,試試選擇用divideind