matlabbp網路演算法
『壹』 MATLAB中BP神經網路的訓練演算法具體是怎麼樣的
先用newff函數建立網路,再用train函數訓練即可。
1)正向傳播:輸入樣本->輸入層->各隱層(處理)->輸出層
注1:若輸出層實際輸出與期望輸出(教師信號)不符,則轉入2)(誤差反向傳播過程)
2)誤差反向傳播:輸出誤差(某種形式)->隱層(逐層)->輸入層
其主要目的是通過將輸出誤差反傳,將誤差分攤給各層所有單元,從而獲得各層單元的誤差信號,進而修正各單元的權值(其過程,是一個權值調整的過程)。
BP演算法實現步驟(軟體):
1)初始化
2)輸入訓練樣本對,計算各層輸出
3)計算網路輸出誤差
4)計算各層誤差信號
5)調整各層權值
6)檢查網路總誤差是否達到精度要求
滿足,則訓練結束;不滿足,則返回步驟2)
註:改進演算法—增加動量項、自適應調整學習速率(這個似乎不錯)及引入陡度因子。
『貳』 如何用MATLAB的神經網路工具箱實現三層BP網路
使用神經網路工具箱可以非常簡便地實現網路建立和訓練,實例代碼如下:
%%BP演算法
functionOut=bpnet(p,t,p_test)
%p,t為樣本需要提前組織好
globalS1
net=newff(minmax(p),[S1,8],{'tansig','purelin'},'trainlm');%trainlm訓練函數最有效
%net=newff(P,T,31,{'tansig','purelin'},'trainlm');%新版用法
net.trainParam.epochs=1000;
net.trainParam.goal=0.00001;
net.trainParam.lr=0.01;
net.trainParam.showWindow=false;%阻止訓練窗口的彈出
net.trainParam.showCommandLine=false;%阻止訓練窗口的彈出
net=train(net,p,t);
Out=sim(net,p_test);
end
上面的代碼不完整,完整的帶訓練樣本數據的程序見附件。
『叄』 用matlab建立bp神經網路後,怎麼寫出數學表達式
可能不是很理解您的意思。但據我所知,bp演算法是通過誤差校正學習演算法來對輸入輸出神經元之間的權值wij進行不斷修改的,所以你只能得到權重向量。如果需要預測可以之間使用sim(net,input);net就是你建立的網路。
如果要看權重具體的值,用net.iw和net.lw。讀出來的值是cell(元胞),調用的時候用大括弧{}。iw是輸入層的權值,lw是中間層的權值。
『肆』 matlab程序 BP神經網路預測 程序如下:
P=[。。。];輸入T=[。。。];輸出
% 創建一個新的前向神經網路
net_1=newff(minmax(P),[10,1],,'traingdm')
% 當前輸入層權值和閾值
inputWeights=net_1.IW
inputbias=net_1.b
% 當前網路層權值和閾值
layerWeights=net_1.LW
layerbias=net_1.b
應該沒問題吧。
『伍』 菜鳥matlab神經網路BP演算法問題
你發完這個,有什麼問題嗎?
『陸』 matlab的遺傳演算法優化BP神經網路
對y=x1^2+x2^2非線性系統進行建模,用1500組數據對網路進行構建網路,500組數據測試網路。由於BP神經網路初始神經元之間的權值和閾值一般隨機選擇,因此容易陷入局部最小值。本方法使用遺傳演算法優化初始神經元之間的權值和閾值,並對比使用遺傳演算法前後的效果。
步驟:
未經遺傳演算法優化的BP神經網路建模
1、
隨機生成2000組兩維隨機數(x1,x2),並計算對應的輸出y=x1^2+x2^2,前1500組數據作為訓練數據input_train,後500組數據作為測試數據input_test。並將數據存儲在data中待遺傳演算法中使用相同的數據。
2、
數據預處理:歸一化處理。
3、
構建BP神經網路的隱層數,次數,步長,目標。
4、
使用訓練數據input_train訓練BP神經網路net。
『柒』 matlab編程問題,建立BP神經網路
%採用動量梯度下降演算法訓練 BP 網路。
close all
clear
echo on
clc
% NEWFF——生成一個新的前向神經網路
% TRAIN——對 BP 神經網路進行訓練
% SIM——對 BP 神經網路進行模擬
pause
% 敲任意鍵開始
clc
% 定義訓練樣本
% P 為輸入矢量 pau
P=[-1,-2,3,1;-1,1,5,-3];
% T 為目標矢量
T=[-1, -1, 1, 1];
pause;
clc
% 創建一個新的前向神經網路
minmax(P)
net=newff(minmax(P),[3,1],{'tansig''purelin'},'traingdm');
% minmax(P)取值范圍是P內的最小值到最大值 [3,1]是3個神經元 1維 tansig purelin traingdm各層神經網路的激勵函數
% tansig purelin隱含層更改權值的函數 當前輸入層權值和閾值
inputWeights=net.IW{1,1};
inputbias=net.b{1};
% 當前網路層權值和閾值
layerWeights=net.LW{2,1};
layerbias=net.b{2};
%表示對各層神經網路的權值與閾值傳遞到相應變數
pause
clc
% 設置訓練參數
net.trainParam.show = 50; %訓練顯示間隔 50次顯示一次
net.trainParam.lr = 0.05; %學習步長0.05學習率
net.trainParam.mc = 0.9; %動量項系數0.9
net.trainParam.epochs = 1000; %訓練次數1000次
net.trainParam.goal = 1e-3; %訓練精度目標為0.001
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神經網路演算法 在matlab中的實現
BP神經網路是最基本、最常用的神經網路,Matlab有專用函數來建立、訓練它,主要就是newff()、train()、sim()這三個函數,當然其他如歸一化函數mapminmax()、其他net的參數設定(lr、goal等)設置好,就可以通過對歷史數據的學習進行預測。附件是一個最基本的預測實例,本來是電力負荷預測的實例,但具有通用性,你仔細看看就明白了。
『玖』 用Matlab算BP神經網路的具體演算法
BP神經網路的傳遞函數一般採用sigmiod函數,學習演算法一般採用最小梯度下降法;下面是具體的程序例子:
例1 採用動量梯度下降演算法訓練 BP 網路。
訓練樣本定義如下:
輸入矢量為
p =[-1 -2 3 1
-1 1 5 -3]
目標矢量為 t = [-1 -1 1 1]
解:本例的 MATLAB 程序如下:
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
『拾』 MATLAB中BP神經網路
%%BP演算法
functionOut=bpnet(p,t,p_test)
S1=5;
%threshold=[0pi/2;0pi/2];
%net=newff(threshold,[5,2],{'tansig','purelin'},'trainlm');
net=newff(minmax(p),[S1,2],{'tansig','purelin'},'trainlm');
%net=newff(P,T,5,{'tansig','purelin'},'trainlm');%新版用法
net.trainParam.epochs=1000;
net.trainParam.goal=0.00001;
net.trainParam.lr=0.01;
net.trainParam.showWindow=false;%阻止訓練窗口的彈出
net.trainParam.showCommandLine=false;%阻止訓練窗口的彈出
net=train(net,p,t);
Out=sim(net,p_test);
end
上次那個問題也是你問的吧?
把上次產生的p和t,用mapminmax函數進行歸一化後,傳遞給這個函數即可,測試的p也可以現在就加進去。
BP(Back Propagation)神經網路是1986年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。BP網路能學習和存貯大量的輸入-輸出模式映射關系,而無需事前揭示描述這種映射關系的數學方程。它的學習規則是使用最速下降法,通過反向傳播來不斷調整網路的權值和閾值,使網路的誤差平方和最小。BP神經網路模型拓撲結構包括輸入層(input)、隱層(hidden layer)和輸出層(output layer)。