『壹』 如何用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神經網路matlab編程問題,給出11個輸入數據和2個輸出數據,進行訓練的程序。要求能運行並出相應的結果
給你一個我的程序,如果自己做不了可以聯系我:1526208341
動量梯度下降演算法訓練 BP 網路
訓練樣本定義如下:
輸入矢量為
p =[-1 -2 3 1
-1 1 5 -3]
目標矢量為 t = [-1 -1 1 1]
close all
clear
echo on
clc
% NEWFF——生成一個新的前向神經網路
% TRAIN——對 BP 神經網路進行訓練
% SIM——對 BP 神經網路進行模擬
pause
% 敲任意鍵開始
clc
% 定義訓練樣本
% P 為輸入矢量
P=[-1, -2, 3, 1; -1, 1, 5, -3];
% T 為目標矢量
T=[-1, -1, 1, 1];
pause;
clc
% 創建一個新的前向神經網路
net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm')
% 當前輸入層權值和閾值
inputWeights=net.IW{1,1}
inputbias=net.b{1}
% 當前網路層權值和閾值
layerWeights=net.LW{2,1}
layerbias=net.b{2}
pause
clc
% 設置訓練參數
net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.mc = 0.9;
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-3;
pause
clc
% 調用 TRAINGDM 演算法訓練 BP 網路
[net,tr]=train(net,P,T);
pause
clc
% 對 BP 網路進行模擬
A = sim(net,P)
% 計算模擬誤差
E = T - A
MSE=mse(E)
pause
clc
echo off
『叄』 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神經網路模型,求高手,在線等
Matlab神經網路工具箱提供了一系列用於建立和訓練bp神經網路模型的函數命令,很難一時講全。下面僅以一個例子列舉部分函數的部分用法。更多的函數和用法請仔細查閱Neural Network Toolbox的幫助文檔。
例子:利用bp神經網路模型建立z=sin(x+y)的模型並檢驗效果
%第1步。隨機生成200個采樣點用於訓練
x=unifrnd(-5,5,1,200);
y=unifrnd(-5,5,1,200);
z=sin(x+y);
%第2步。建立神經網路模型。其中參數一是輸入數據的范圍,參數二是各層神經元數量,參數三是各層傳遞函數類型。
N=newff([-5 5;-5 5],[5,5,1],{'tansig','tansig','purelin'});
%第3步。訓練。這里用批訓練函數train。也可用adapt函數進行增長訓練。
N=train(N,[x;y],z);
%第4步。檢驗訓練成果。
[X,Y]=meshgrid(linspace(-5,5));
Z=sim(N,[X(:),Y(:)]');
figure
mesh(X,Y,reshape(Z,100,100));
hold on;
plot3(x,y,z,'.')
『伍』 MATLAB中訓練LM演算法的BP神經網路
1.初始權值不一樣,如果一樣,每次訓練結果是相同的
2.是
3.在train之前修改權值,IW,LW,b,使之相同
4.取多次實驗的均值
一點淺見,僅供參考
訓練誤差是否降到一定范圍內,比如1e-3,
將訓練樣本回代結果如何,
訓練樣本進行了預處理,比如歸一化,而測試樣本未進行同樣的處理
這樣的歸一化似有問題,我也認為「測試數據的歸一化也用訓練數據歸一化時得出的min和max值」,
請參考這個帖子http://www.ilovematlab.cn/thread-27021-1-1.html
測試數據帶入訓練好的神經網路誤差當然不會達到1e-5,這是預測啊。
但將訓練數據帶入誤差必然是1e-5,演算法終止就是因為達到這個誤差才終止,這個誤差是由訓練數據的輸入、輸出以及神經網路的權值、激活函數共同決定的,神經網路訓練完後,權值、激活函數定了,同樣的數據再代入神經網路,誤差會不等於1e-5?
第二個問題:不可能每個值都達到1e-5,1e-5是MSE(mean square error),它們的平方和除以總數再開方,mse(E)必為1e-5
另外,LM演算法雖然訓練最快,但是預測精度一般不好,不如gdm,gdx
『陸』 BP神經網路是怎麼訓練的
就是將訓練樣本集劃分為兩部分,測試集和驗證集,僅用測試集訓練,每次訓練後用驗證集代入,求其誤差和,當訓練誤差不斷減小而驗證誤差卻增加時,可以考慮演算法終止,再訓練可能就會過擬合。
希望你能看明白
『柒』 BP神經網路方法
人工神經網路是近幾年來發展起來的新興學科,它是一種大規模並行分布處理的非線性系統,適用解決難以用數學模型描述的系統,逼近任何非線性的特性,具有很強的自適應、自學習、聯想記憶、高度容錯和並行處理能力,使得神經網路理論的應用已經滲透到了各個領域。近年來,人工神經網路在水質分析和評價中的應用越來越廣泛,並取得良好效果。在這些應用中,縱觀應用於模式識別的神經網路,BP網路是最有效、最活躍的方法之一。
BP網路是多層前向網路的權值學習採用誤差逆傳播學習的一種演算法(Error Back Propagation,簡稱BP)。在具體應用該網路時分為網路訓練及網路工作兩個階段。在網路訓練階段,根據給定的訓練模式,按照「模式的順傳播」→「誤差逆傳播」→「記憶訓練」→「學習收斂」4個過程進行網路權值的訓練。在網路的工作階段,根據訓練好的網路權值及給定的輸入向量,按照「模式順傳播」方式求得與輸入向量相對應的輸出向量的解答(閻平凡,2000)。
BP演算法是一種比較成熟的有指導的訓練方法,是一個單向傳播的多層前饋網路。它包含輸入層、隱含層、輸出層,如圖4-4所示。
圖4-4 地下水質量評價的BP神經網路模型
圖4-4給出了4層地下水水質評價的BP神經網路模型。同層節點之間不連接。輸入信號從輸入層節點,依次傳過各隱含層節點,然後傳到輸出層節點,如果在輸出層得不到期望輸出,則轉入反向傳播,將誤差信號沿原來通路返回,通過學習來修改各層神經元的權值,使誤差信號最小。每一層節點的輸出隻影響下一層節點的輸入。每個節點都對應著一個作用函數(f)和閾值(a),BP網路的基本處理單元量為非線性輸入-輸出的關系,輸入層節點閾值為0,且f(x)=x;而隱含層和輸出層的作用函數為非線性的Sigmoid型(它是連續可微的)函數,其表達式為
f(x)=1/(1+e-x) (4-55)
設有L個學習樣本(Xk,Ok)(k=1,2,…,l),其中Xk為輸入,Ok為期望輸出,Xk經網路傳播後得到的實際輸出為Yk,則Yk與要求的期望輸出Ok之間的均方誤差為
區域地下水功能可持續性評價理論與方法研究
式中:M為輸出層單元數;Yk,p為第k樣本對第p特性分量的實際輸出;Ok,p為第k樣本對第p特性分量的期望輸出。
樣本的總誤差為
區域地下水功能可持續性評價理論與方法研究
由梯度下降法修改網路的權值,使得E取得最小值,學習樣本對Wij的修正為
區域地下水功能可持續性評價理論與方法研究
式中:η為學習速率,可取0到1間的數值。
所有學習樣本對權值Wij的修正為
區域地下水功能可持續性評價理論與方法研究
通常為增加學習過程的穩定性,用下式對Wij再進行修正:
區域地下水功能可持續性評價理論與方法研究
式中:β為充量常量;Wij(t)為BP網路第t次迭代循環訓練後的連接權值;Wij(t-1)為BP網路第t-1次迭代循環訓練後的連接權值。
在BP網路學習的過程中,先調整輸出層與隱含層之間的連接權值,然後調整中間隱含層間的連接權值,最後調整隱含層與輸入層之間的連接權值。實現BP網路訓練學習程序流程,如圖4-5所示(倪深海等,2000)。
圖4-5 BP神經網路模型程序框圖
若將水質評價中的評價標准作為樣本輸入,評價級別作為網路輸出,BP網路通過不斷學習,歸納出評價標准與評價級別間復雜的內在對應關系,即可進行水質綜合評價。
BP網路對地下水質量綜合評價,其評價方法不需要過多的數理統計知識,也不需要對水質量監測數據進行復雜的預處理,操作簡便易行,評價結果切合實際。由於人工神經網路方法具有高度民主的非線性函數映射功能,使得地下水水質評價結果較准確(袁曾任,1999)。
BP網路可以任意逼近任何連續函數,但是它主要存在如下缺點:①從數學上看,它可歸結為一非線性的梯度優化問題,因此不可避免地存在局部極小問題;②學習演算法的收斂速度慢,通常需要上千次或更多。
神經網路具有學習、聯想和容錯功能,是地下水水質評價工作方法的改進,如何在現行的神經網路中進一步吸取模糊和灰色理論的某些優點,建立更適合水質評價的神經網路模型,使該模型既具有方法的先進性又具有現實的可行性,將是我們今後研究和探討的問題。
『捌』 如何建立bp神經網路預測 模型
建立BP神經網路預測 模型,可按下列步驟進行:
1、提供原始數據
2、訓練數內據預測數據提取及歸一化
3、BP網路容訓練
4、BP網路預測
5、結果分析
現用一個實際的例子,來預測2015年和2016年某地區的人口數。
已知2009年——2014年某地區人口數分別為3583、4150、5062、4628、5270、5340萬人
執行BP_main程序,得到
[ 2015, 5128.631704710423946380615234375]
[ 2016, 5100.5797325642779469490051269531]
代碼及圖形如下。