㈠ 如何用matlab訓練BP神經網路
net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF)
newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) takes,
PR - Rx2 matrix of min and max values for R input elements.
Si - Size of ith layer, for Nl layers.
TFi - Transfer function of ith layer, default = 'tansig'.
BTF - Backprop network training function, default = 'trainlm'.
BLF - Backprop weight/bias learning function, default = 'learngdm'.
PF - Performance function, default = 'mse'.
然後train一下就可以了,具體其他參數查閱相關文檔,一般有前四個參數就夠了。
看一個簡單的例子:
有兩個向量或者矩陣,pn和tn:
net=newff(minmax(pn),[3,1],{'tansig','purelin'},'trainlm');
net.trainParam.epochs=1000;
net.trainParam.goal =1e-5;
net=train(net,pn,tn);
照葫蘆畫瓢就行,具體參數意義就不說了,自己查閱matlab幫助。
㈡ BP神經網路進行數字識別訓練過程的原理
這段程序的流程就是1.隨機產生一些帶雜訊的樣本;2.用這些樣本對神經網路進行訓練;3.訓練完成。訓練好的網路就具有了數字識別的功能,你用一個帶雜訊的樣本去檢驗它,其輸出就是識別結果。給你提供一個車牌智能識別的matlab代碼,你可以參考一下。
㈢ 自學bp神經網路要有什麼基礎
簡介:BP(Back Propagation)網路是1986年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。BP網路能學習和存貯大量的輸入-輸出模式映射關系,而無需事前揭示描述這種映射關系的數學方程。它的學習規則是使用最速下降法,通過反向傳播來不斷調整網路的權值和閾值,使網路的誤差平方和最小。BP神經網路模型拓撲結構包括輸入層(input)、隱層(hide layer)和輸出層(output layer) 摘 要:BP神經網路演算法是在BP神經網路現有演算法的基礎上提出的,是通過任意選定一組權值,將給定的目標輸出直接作為線性方程的代數和來建立線性方程組,解得待求權,不存在傳統方法的局部極小及收斂速度慢的問題,且更易理解。關鍵詞:固定權值;gauss消元法;BP演算法人工神經網路(artificial neural networks,ANN)系統是20世紀40年代後出現的,它是由眾多的神經元可調的連接權值連接而成,具有大規模並行處理、分布式信息存儲、良好的自組織自學習能力等特點,在信息處理、模式識別、智能控制及系統建模等領域得到越來越廣泛的應用。尤其誤差反向傳播演算法(Error Back-propagation Training,簡稱BP網路)可以逼近任意連續函數,具有很強的非線性映射能力,而且網路的中間層數、各層的處理單元數及網路的學習系數等參數可根據具體情況設定,靈活性很大,所以它在許多應用領域中起到重要作用。近年來,為了解決BP神經網路收斂速度慢、不能保證收斂到全局最小點,網路的中間層及它的單元數選取無理論指導及網路學習和記憶的不穩定性等缺陷,提出了許多改進演算法。1 傳統的BP演算法簡述BP演算法是一種有監督式的學習演算法,其主要思想是:輸入學習樣本,使用反向傳播演算法對網路的權值和偏差進行反復的調整訓練,使輸出的向量與期望向量盡可能地接近,當網路輸出層的誤差平方和小於指定的誤差時訓練完成,保存網路的權值和偏差。具體步驟如下:(1)初始化,隨機給定各連接權[w],[v]及閥值θi,rt。(2)由給定的輸入輸出模式對計算隱層、輸出層各單元輸出bj=f(■wijai-θj) ct=f(■vjtbj-rt)式中:bj為隱層第j個神經元實際輸出;ct為輸出層第t個神經元的實際輸出;wij為輸入層至隱層的連接權;vjt為隱層至輸出層的連接權。dtk=(ytk-ct)ct(1-ct) ejk=[■dtvjt] bj(1-bj)式中:dtk為輸出層的校正誤差;ejk為隱層的校正誤差。(3)計算新的連接權及閥值,計算公式如下:vjt(n+1)=vjt(n)+琢dtkbj wij(n+1)=wij(n)+茁ejkaik rt(n+1)=rt(n)+琢dtk θj(n+1)=θj(n)+茁ejk 式中:琢,茁為學習系數(0<琢<1,0<茁<1)。(4)選取下一個輸入模式對返回第2步反復訓練直到網路設輸出誤差達到要求結束訓練。傳統的BP演算法,實質上是把一組樣本輸入/輸出問題轉化為一個非線性優化問題,並通過負梯度下降演算法,利用迭代運算求解權值問題的一種學習方法,但其收斂速度慢且容易陷入局部極小,為此提出了一種新的演算法,即高斯消元法。
㈣ 關於MATLAB的bp神經網路模型的訓練和驗證
可能發生了過度擬合的問題,導致網路泛化能力不足。
你訓練的樣本波動性很強,但是你檢驗的樣本波動性很弱,神經網路在適應變化極大的問題時,效果不太好。
泛化:當某一反應與某種刺激形成條件聯系後,這一反應也會與其它類似的刺激形成某種程度的條件聯系,這一過程稱為泛化。在心理學心理咨詢中所謂泛化指的是:引起求助者目前不良的心理和行為反應的刺激事件不再是最初的事件,同最初刺激事件相類似、相關聯的事件(已經泛化),甚至同最初刺激事件不類似、無關聯的事件(完全泛化),也能引起這些心理和行為反應(症狀表現)。
㈤ 菜鳥求教,BP神經網路在訓練時,我的輸入P不止一組那該怎麼訓練呀。
神經網路訓練本來就是多組數據進行的。一組輸入對應一個輸出,n組輸入完成後得到n組輸出,計算n組輸出與n個實際值的誤差,調整網路參數
㈥ 訓練BP神經網路對函數進行擬合
去掉這一句:[Pn]=tramnmx(P,minp,maxp) 你這一句不開玩笑嗎?
??? Error using ==> network.subsasgn>network_subsasgn at 535
"layers{1}.transferFcn" cannot be set to non-existing function "tasing'purelin".
這一錯誤是因為,你漏掉了逗號,而且tansig拼錯了,應該是{'tansig','purelin'}
我直接幫你把代碼全部改好吧,復制到m文件或命令窗口運行即可:
clc,clear;
P=-pi/2+0.1:pi/10:pi/2-0.1;
T=tan(P);
plot(P,T,'-*');
[Pn,pps]=mapminmax(P,0,1);%p歸一化
[Tn,tps]=mapminmax(T,0,1);%t歸一化
net=newff(minmax(Pn),[51],{'tansig','purelin'},'trainlm');
net.trainParam.show=10;
net.trainParam.lr=0.05;
net.trainParam.epochs=500;
net.trainParam.goal=0.01;
[net,tr]=train(net,Pn,Tn);
r=sim(net,Pn);
r=mapminmax('reverse',r,tps);%反歸一化
plot(P,r,'-ro',P,T,'-b*');
㈦ BP人工神經網路方法
(一)方法原理
人工神經網路是由大量的類似人腦神經元的簡單處理單元廣泛地相互連接而成的復雜的網路系統。理論和實踐表明,在信息處理方面,神經網路方法比傳統模式識別方法更具有優勢。人工神經元是神經網路的基本處理單元,其接收的信息為x1,x2,…,xn,而ωij表示第i個神經元到第j個神經元的連接強度或稱權重。神經元的輸入是接收信息X=(x1,x2,…,xn)與權重W={ωij}的點積,將輸入與設定的某一閾值作比較,再經過某種神經元激活函數f的作用,便得到該神經元的輸出Oi。常見的激活函數為Sigmoid型。人工神經元的輸入與輸出的關系為
地球物理勘探概論
式中:xi為第i個輸入元素,即n維輸入矢量X的第i個分量;ωi為第i個輸入與處理單元間的互聯權重;θ為處理單元的內部閾值;y為處理單元的輸出。
常用的人工神經網路是BP網路,它由輸入層、隱含層和輸出層三部分組成。BP演算法是一種有監督的模式識別方法,包括學習和識別兩部分,其中學習過程又可分為正向傳播和反向傳播兩部分。正向傳播開始時,對所有的連接權值置隨機數作為初值,選取模式集的任一模式作為輸入,轉向隱含層處理,並在輸出層得到該模式對應的輸出值。每一層神經元狀態隻影響下一層神經元狀態。此時,輸出值一般與期望值存在較大的誤差,需要通過誤差反向傳遞過程,計算模式的各層神經元權值的變化量
(二)BP神經網路計算步驟
(1)初始化連接權值和閾值為一小的隨機值,即W(0)=任意值,θ(0)=任意值。
(2)輸入一個樣本X。
(3)正向傳播,計算實際輸出,即根據輸入樣本值、互聯權值和閾值,計算樣本的實際輸出。其中輸入層的輸出等於輸入樣本值,隱含層和輸出層的輸入為
地球物理勘探概論
輸出為
地球物理勘探概論
式中:f為閾值邏輯函數,一般取Sigmoid函數,即
地球物理勘探概論
式中:θj表示閾值或偏置;θ0的作用是調節Sigmoid函數的形狀。較小的θ0將使Sigmoid函數逼近於閾值邏輯單元的特徵,較大的θ0將導致Sigmoid函數變平緩,一般取θ0=1。
(4)計算實際輸出與理想輸出的誤差
地球物理勘探概論
式中:tpk為理想輸出;Opk為實際輸出;p為樣本號;k為輸出節點號。
(5)誤差反向傳播,修改權值
地球物理勘探概論
式中:
地球物理勘探概論
地球物理勘探概論
(6)判斷收斂。若誤差小於給定值,則結束,否則轉向步驟(2)。
(三)塔北雅克拉地區BP神經網路預測實例
以塔北雅克拉地區S4井為已知樣本,取氧化還原電位,放射性元素Rn、Th、Tc、U、K和地震反射
S4井位於測區西南部5線25點,是區內唯一已知井。該井在5390.6m的侏羅系地層獲得40.6m厚的油氣層,在5482m深的震旦系地層中獲58m厚的油氣層。取S4井周圍9個點,即4~6線的23~25 點作為已知油氣的訓練樣本;由於區內沒有未見油的鑽井,只好根據地質資料分析,選取14~16線的55~57點作為非油氣的訓練樣本。BP網路學習迭代17174次,總誤差為0.0001,學習效果相當滿意。以學習後的網路進行識別,得出結果如圖6-2-4所示。
圖6-2-4 塔北雅克拉地區BP神經網路聚類結果
(據劉天佑等,1997)
由圖6-2-4可見,由預測值大於0.9可得5個大封閉圈遠景區,其中測區南部①號遠景區對應著已知油井S4井;②、③號油氣遠景區位於地震勘探所查明的托庫1、2號構造,該兩個構造位於沙雅隆起的東段,其西段即為1984年鑽遇高產油氣流的Sch2井,應是含油氣性好的遠景區;④、⑤號遠景區位於大澇壩構造,是yh油田的組成部分。
㈧ MATLAB BP神經網路訓練
你的程序訓練完畢後根本就沒達到目標誤差,就是說訓練效果不好,不能進行預測,只有訓練結果好了才能預測模擬,你再改一下隱含層神經元數或者訓練和傳遞函數試試吧~
另外輸入層的值可以歸一化也可以不歸一化,歸一化後在模擬之前要反歸一化。
㈨ BP神經網路(誤差反傳網路)
雖然每個人工神經元很簡單,但是只要把多個人工
神經元按一定方式連接起來就構成了一個能處理復雜信息的神經網路。採用BP演算法的多層前饋網路是目前應用最廣泛的神經網路,稱之為BP神經網路。它的最大功能就是能映射復雜的非線性函數關系。
對於已知的模型空間和數據空間,我們知道某個模型和他對應的數據,但是無法寫出它們之間的函數關系式,但是如果有大量的一一對應的模型和數據樣本集合,利用BP神經網路可以模擬(映射)它們之間的函數關系。
一個三層BP網路如圖8.11所示,分為輸入層、隱層、輸出層。它是最常用的BP網路。理論分析證明三層網路已經能夠表達任意復雜的連續函數關系了。只有在映射不連續函數時(如鋸齒波)才需要兩個隱層[8]。
圖8.11中,X=(x1,…,xi,…,xn)T為輸入向量,如加入x0=-1,可以為隱層神經元引入閥值;隱層輸出向量為:Y=(y1,…,yi,…,ym)T,如加入y0=-1,可以為輸出層神經元引入閥值;輸出層輸出向量為:O=(o1,…,oi,…,ol)T;輸入層到隱層之間的權值矩陣用V表示,V=(V1,…,Vj,…,Vl)T,其中列向量Vj表示隱層第j個神經元的權值向量;隱層到輸出層之間的權值矩陣用W表示,W=(W1,…,Wk,…,Wl)T,
其中列向量Wk表示輸出層第k個神經元的權值向量。
圖8.11 三層BP網路[8]
BP演算法的基本思想是:預先給定一一對應的輸入輸出樣本集。學習過程由信號的正向傳播與誤差的反向傳播兩個過程組成。正向傳播時,輸入樣本從輸入層傳入,經過各隱層逐層處理後,傳向輸出層。若輸出層的實際輸出與期望的輸出(教師信號)不符,則轉入誤差的反向傳播。將輸出誤差以某種形式通過隱層向輸入層逐層反傳,並將誤差分攤給各層的所有神經元,獲得各層的誤差信號,用它們可以對各層的神經元的權值進行調整(關於如何修改權值參見韓立群著作[8]),循環不斷地利用輸入輸出樣本集進行權值調整,以使所有輸入樣本的輸出誤差都減小到滿意的精度。這個過程就稱為網路的學習訓練過程。當網路訓練完畢後,它相當於映射(表達)了輸入輸出樣本之間的函數關系。
在地球物理勘探中,正演過程可以表示為如下函數:
d=f(m) (8.31)
它的反函數為
m=f-1(d) (8.32)
如果能夠獲得這個反函數,那麼就解決了反演問題。一般來說,難以寫出這個反函數,但是我們可以用BP神經網路來映射這個反函數m=f-1(d)。對於地球物理反問題,如果把觀測數據當作輸入數據,模型參數當作輸出數據,事先在模型空間隨機產生大量樣本進行正演計算,獲得對應的觀測數據樣本,利用它們對BP網路進行訓練,則訓練好的網路就相當於是地球物理數據方程的反函數。可以用它進行反演,輸入觀測數據,網路就會輸出它所對應的模型。
BP神經網路在能夠進行反演之前需要進行學習訓練。訓練需要大量的樣本,產生這些樣本需要大量的正演計算,此外在學習訓練過程也需要大量的時間。但是BP神經網路一旦訓練完畢,在反演中的計算時間可以忽略。
要想使BP神經網路比較好地映射函數關系,需要有全面代表性的樣本,但是由於模型空間的無限性,難以獲得全面代表性的樣本集合。用這樣的樣本訓練出來的BP網路,只能反映樣本所在的較小范圍數據空間和較小范圍模型空間的函數關系。對於超出它們的觀測數據就無法正確反演。目前BP神經網路在一維反演有較多應用,在二維、三維反演應用較少,原因就是難以產生全面代表性的樣本空間。