1. 如何用matlab編寫BP神經網路程序
matlab編寫BP神經網路很方便的,這個工作不用像編程序的C什麼的那樣還要編寫演算法。這個演算法早已經在軟體的庫里提供了。你只要用一條語句就出來了。把參數,深度和節點固定的往裡一代數就可以了。還有一點,注意最後結果的收斂性,神經網路發展一直是曲折前進的,為什麼這樣,現在不太給力,因為面臨著一個收斂的問題,實現起來效果不好。這些程序網上有很多,你借一本基本的神經網路的書裡面也有。望採納。
2. 下圖用matlab怎麼編bp演算法代碼
%讀取訓練數據
[f1,f2,f3,f4,class] = textread('trainData.txt' , '%f%f%f%f%f',150);
%特徵值歸一化
[input,minI,maxI] = premnmx( [f1 , f2 , f3 , f4 ]') ;
%構造輸出矩陣
s = length( class) ;
output = zeros( s , 3 ) ;
for i = 1 : s
output( i , class( i ) ) = 1 ;
end
%創建神經網路
net = newff( minmax(input) , [10 3] , { 'logsig' 'purelin' } , 'traingdx' ) ;
%設置訓練參數
net.trainparam.show = 50 ;
net.trainparam.epochs = 500 ;
net.trainparam.goal = 0.01 ;
net.trainParam.lr = 0.01 ;
%開始訓練
net = train( net, input , output' ) ;
%讀取測試數據
[t1 t2 t3 t4 c] = textread('testData.txt' , '%f%f%f%f%f',150);
%測試數據歸一化
testInput = tramnmx ( [t1,t2,t3,t4]' , minI, maxI ) ;
%模擬
Y = sim( net , testInput )
%統計識別正確率
[s1 , s2] = size( Y ) ;
hitNum = 0 ;
for i = 1 : s2
[m , Index] = max( Y( : , i ) ) ;
if( Index == c(i) )
hitNum = hitNum + 1 ;
end
end
sprintf('識別率是 %3.3f%%',100 * hitNum / s2 )
看了你的數據,你至少要有的類標號吧,不知道你哪裡是輸入向量,哪裡是輸出向量
3. matlab BP神經網路訓練程序求解釋
樓主解決沒?這是我知道的
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %歸一化數據,方便後面的預測
net.trainParam. show = 100; %這里的show是顯示步數,每100步顯示一次
net.trainParam.goal=0.0001; %目標誤差,訓練得到的數據和原始輸入
net.trainParam.lr = 0.01; %lr是學習動量,一般越小越好
y1=sim(net,pn); %sim用來預測的
xlswrite('testdata6',tnew1); ?這里的testdata6是excel表格的名稱
你可以看看書的,書上都有介紹
4. 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
應該沒問題吧。
5. BP演算法在一個matlab程序中可以區分幾類數據
在BP分類中,輸出神經元的個數理論上是沒有限制的,就是說你分幾類都是可以的。
6. 用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
7. 求一個用matlab實際的bp演算法
首先對於數據進行歸一化,我就不用matlab裡面的代碼了
maxP = max(max(p));
p = p';
Input = p(:, 1:4)./maxP;
Target = p(:, 2:5)./maxP;
netP = newff(Input, Target, 10);
netP = train(netP, Input, Target);
上面這個神經網路預測下一年的P值
P09_13 = zeros(6, 5)
for i = 1:5
if i == 1
P09_13(:, i) = sim(net, p(:, 5));
else
P09_13(:, i) = sim(net, P09_13(:, i-1));
end
end
以上得到09-13年預測出來的p值
下面求p-t之間的關系
Input = p./maxP;
Target =t./maxP;
net = newff(Input, Target, 10);
net = train(net, Input, Target);
以上代碼求出了p-t對應關系
preliminaryResult = zeros(1, 5);
for i = 1:5
preliminaryResult = sim(net, P09_13(:, i));
end
result = preliminaryResult.*maxP;
result裡面是09-13年預測出來的房價。
我沒給你實際跑這個程序,明天就交論文你這個點求助我就不說你什麼了。我估計應該沒錯誤。
聽天由命吧,少年。
8. bp神經網路演算法 在matlab中的實現
BP神經網路是最基本、最常用的神經網路,Matlab有專用函數來建立、訓練它,主要就是newff()、train()、sim()這三個函數,當然其他如歸一化函數mapminmax()、其他net的參數設定(lr、goal等)設置好,就可以通過對歷史數據的學習進行預測。附件是一個最基本的預測實例,本來是電力負荷預測的實例,但具有通用性,你仔細看看就明白了。
9. matlab編程關於BP演算法的問題
clear
P=[...]%輸入
T=[...]%輸出
% 創建一個新的前向神經網路
net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm');
% 當前輸入層權值和閾值
inputWeights=net_1.IW{1,1};
inputbias=net_1.b{1};
% 當前網路層權值和閾值
layerWeights=net_1.LW{2,1};
layerbias=net_1.b{2};
% 設置訓練參數
net_1.trainParam.show = 50;
net_1.trainParam.lr = 0.05;
net_1.trainParam.mc = 0.9;
net_1.trainParam.epochs = 1000;
net_1.trainParam.goal = 1e-3;
% 調用 TRAINGDM 演算法訓練 BP 網路
[net_1,tr]=train(net_1,P,T);
% 對 BP 網路進行模擬
A = sim(net_1,P);
% 計算模擬誤差
E = T - A;
MSE=mse(E)
x=[1 2 3]'
sim(net_1,x)
10. 用matlab實現bp演算法,對樣本進行訓練
P=[5.700 3.800 0.3175 2.33;
4.550 3.050 0.3175 2.33;
2.950 1.950 0.3175 2.33;
1.950 1.300 0.3175 2.33;
1.400 0.900 0.3175 2.33;
1.200 0.800 0.3175 2.33;
1.050 0.700 0.3175 2.33;
1.700 1.100 0.9525 2.33;
1.700 1.100 0.1524 2.33;
4.100 4.140 0.1524 2.50;
10.80 4.140 0.1524 2.50;
0.850 1.290 0.0170 2.22;
2.000 2.500 0.0790 2.22;
1.063 1.183 0.0790 2.55;
0.910 1.000 0.1270 10.2;
1.720 1.860 0.1570 2.33;
1.270 1.350 0.1630 2.55;
1.500 1.621 0.1630 2.55;
1.120 1.200 0.2420 2.55;
1.403 1.485 0.2520 2.55;
1.530 1.630 0.3000 2.50;
0.905 1.018 0.3000 2.50;
1.170 1.280 0.3000 2.50;
0.776 1.080 0.3300 2.55;
0.790 1.255 0.4000 2.55;
0.987 1.450 0.4500 2.55;
0.814 1.440 0.4760 2.55;
0.970 1.620 0.5500 2.55;
1.200 1.970 0.6260 2.55;
0.783 2.300 0.8540 2.55;
0.974 2.620 0.9520 2.55;
1.020 2.640 0.9520 2.55;
0.883 2.676 1.0000 2.55;
0.777 2.835 1.1000 2.55;
0.920 3.130 1.2000 2.55;
1.265 3.500 1.2810 2.55;
1.080 3.400 1.2810 2.55];
%輸入
T=[ 2310;
2890;
4240;
5840;
7700;
8270;
9140;
4730;
7870;
2228;
2181;
7740;
3970;
7730;
4600;
5060;
6560;
5600;
7050;
5800;
5270;
7990;
6570;
8000;
7134;
6070;
6380;
5990;
4660
4600;
3980;
3900;
3980;
3900;
3470;
2980;
3150];
%輸出
P=P';
T=T';
% 創建一個新的前向神經網路
net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm');
% 當前輸入層權值和閾值
inputWeights=net_1.IW{1,1}
inputbias=net_1.b{1}
% 當前網路層權值和閾值
layerWeights=net_1.LW{2,1}
layerbias=net_1.b{2}
% 設置訓練參數
net_1.trainParam.show = NaN;
net_1.trainParam.lr = 0.05;
net_1.trainParam.mc = 0.9;
net_1.trainParam.epochs = 10000;
net_1.trainParam.goal = 1e-6;
% 調用 TRAINGDM 演算法訓練 BP 網路
[net_1,tr]=train(net_1,P,T)