導航:首頁 > 五金知識 > bp神經網路工具箱的代碼

bp神經網路工具箱的代碼

發布時間:2021-02-17 17:32:48

❶ BP神經網路代碼用什麼實現

BP演算法,只是一種演算法,用任何語言都能實現。
Matlab有神經網路工具箱,提供已經封裝好的:網版絡建立權函數newff、訓練函數train,省去了自己編寫代碼的麻煩,你可以考慮。

BP(Back Propagation)神經網路是1986年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。BP網路能學習和存貯大量的輸入-輸出模式映射關系,而無需事前揭示描述這種映射關系的數學方程。它的學習規則是使用最速下降法,通過反向傳播來不斷調整網路的權值和閾值,使網路的誤差平方和最小。BP神經網路模型拓撲結構包括輸入層(input)、隱層(hidden layer)和輸出層(output layer)。

❷ 需要把MATLAB中的BP神經網路工具箱與自己的一個軟體項目結合

這個就是C++與matlab混合編程。但是神經網路工具箱比較特別,它反盜用比較嚴厲。採用回傳統的混答編方式,可以調用matlab自己的函數,但無法成功調用神經網路工具箱。這一點在mathwork網站上也做了說明。

以C#為例,一般混編有四種方式:
(1)利用Matlab自身編譯器,目的是將m文件轉換為c或c++的源代碼。
(2)利用COM或.NET組件技術。通過MATLAB中的Deploy tool工具將m文件編譯成dll,然後在系統中調用。
(3)利用Mideva平台。沒嘗試過。
(4)利用MATLAB引擎技術。該方法相當於在.NET中運行MATLAB程序,獲取其結果。優點是操作簡單,過程簡易。缺點是需要安裝Matlab軟體。

如果要調用神經網路工具箱,只有使用第四種方法,即引擎技術,其他方法都不可行。這種混編方式僅僅傳遞參數,因此不涉及到神經網路工具箱的代碼,也就沒有了防盜用限制。

❸ matlab神經網路工具箱訓練出來的函數,怎麼輸出得到函數代碼段

這樣:

clear;

%輸入數據矩陣

p1=zeros(1,1000);

p2=zeros(1,1000);

%填充數據

for i=1:1000

p1(i)=rand;

p2(i)=rand;

end

%輸入層有兩個,樣本數為1000

p=[p1;p2];

%目標(輸出)數據矩陣,待擬合的關系為簡單的三角函數

t = cos(pi*p1)+sin(pi*p2);

%對訓練集中的輸入數據矩陣和目標數據矩陣進行歸一化處理

[pn, inputStr] = mapminmax(p);

[tn, outputStr] = mapminmax(t);

%建立BP神經網路

net = newff(pn, tn, [200,10]);

%每10輪回顯示一次結果

net.trainParam.show = 10;

%最大訓練次數

net.trainParam.epochs = 5000;

%網路的學習速率

net.trainParam.lr = 0.05;

%訓練網路所要達到的目標誤差

net.trainParam.goal = 10^(-8);

%網路誤差如果連續6次迭代都沒變化,則matlab會默認終止訓練。為了讓程序繼續運行,用以下命令取消這條設置

net.divideFcn = '';

%開始訓練網路

net = train(net, pn, tn);

%訓練完網路後要求網路的權值w和閾值b

%獲取網路權值、閾值

netiw = net.iw;

netlw = net.lw;

netb = net.b;

w1 = net.iw{1,1}; %輸入層到隱層1的權值

b1 = net.b{1} ; %輸入層到隱層1的閾值

w2 = net.lw{2,1}; %隱層1到隱層2的權值

b2 = net.b{2} ; %隱層1到隱層2的閾值

w3 = net.lw{3,2}; %隱層2到輸出層的權值

b3 = net.b{3} ;%隱層2到輸出層的閾值

%在默認的訓練函數下,擬合公式為,y=w3*tansig(w2*tansig(w1*in+b1)+b2)+b3;

%用公式計算測試數據[x1;x2]的輸出,輸入要歸一化,輸出反歸一化

in = mapminmax('apply',[x1;x2],inputStr);

y=w3*tansig(w2*tansig(w1*in+b1)+b2)+b3;

y1=mapminmax('reverse',y,outputStr);

%用bp神經網路驗證計算結果

out = sim(net,in);

out1=mapminmax('reverse',out,outputStr);

(3)bp神經網路工具箱的代碼擴展閱讀:

注意事項

一、訓練函數

1、traingd

Name:Gradient descent backpropagation (梯度下降反向傳播演算法 )

Description:triangd is a network training function that updates weight and bias values according to gradient descent.

2、traingda

Name:Gradient descentwith adaptive learning rate backpropagation(自適應學習率的t梯度下降反向傳播演算法)

Description:triangd is a network training function that updates weight and bias values according to gradient descent with adaptive learning rate.it will return a trained net (net) and the trianing record (tr).

3、traingdx (newelm函數默認的訓練函數)

name:Gradient descent with momentum and adaptive learning rate backpropagation(帶動量的梯度下降的自適應學習率的反向傳播演算法)

Description:triangdx is a network training function that updates weight and bias values according to gradient descent momentumand an adaptive learning rate.it will return a trained net (net) and the trianing record (tr).

4、trainlm

Name:Levenberg-Marquardtbackpropagation(L-M反向傳播演算法)

Description:triangd is a network training function that updates weight and bias values according toLevenberg-Marquardt optimization.it will return a trained net (net) and the trianing record (tr).

註:更多的訓練演算法請用matlab的help命令查看。

二、學習函數

1、learngd

Name:Gradient descent weight and bias learning function(梯度下降的權值和閾值學習函數)

Description:learngd is the gradient descentweight and bias learning function, it willreturn theweight change dWand a new learning state.

2、learngdm

Name:Gradient descentwith momentumweight and bias learning function(帶動量的梯度下降的權值和閾值學習函數)

Description:learngd is the gradient descentwith momentumweight and bias learning function, it willreturn the weight change dW and a new learning state.

註:更多的學習函數用matlab的help命令查看。

三、訓練函數與學習函數的區別

函數的輸出是權值和閾值的增量,訓練函數的輸出是訓練好的網路和訓練記錄,在訓練過程中訓練函數不斷調用學習函數修正權值和閾值,通過檢測設定的訓練步數或性能函數計算出的誤差小於設定誤差,來結束訓練。

或者這么說:訓練函數是全局調整權值和閾值,考慮的是整體誤差的最小。學習函數是局部調整權值和閾值,考慮的是單個神經元誤差的最小。

它的基本思想是學習過程由信號的正向傳播與誤差的反向傳播兩個過程組成。

正向傳播時,輸入樣本從輸入層傳入,經各隱層逐層處理後,傳向輸出層。若輸出層的實際輸出與期望的輸出(教師信號)不符,則轉入誤差的反向傳播階段。

反向傳播時,將輸出以某種形式通過隱層向輸入層逐層反傳,並將誤差分攤給各層的所有單元,從而獲得各層單元的誤差信號,此誤差信號即作為修正各單元權值的依據。

❹ 急求用BP神經網路實現車牌識別的MATLAB程序代碼

車牌識別技術(Vehicle License Plate Recognition,VLPR) 是計算機視頻圖像識別技術在車輛牌照識別中的一種應用。車牌識內別技術要求能夠將運動中的汽車牌照從復雜背景中提取並識別出來,通過車牌提取、圖像預處理、特徵提取、車牌字元識別等技術,容識別車輛牌號,目前的技術水平為字母和數字的識別率可達到96%,漢字的識別率可達到95%。


附件為基於matlab的車牌識別的源程序(可以實現),其中包括車牌定位,車牌矯正,字元分割,字元識別4部分。還有已訓練好的BP神經網路用於字元識別。

❺ 如何用MATLAB的神經網路工具箱實現三層BP網路

這是一個來自<神經網路之家>nnetinfo的例子,在matlab2012b運行後的確可以,因為網路知道的文本寬度不夠,注釋擠到第二行了,有些亂,樓主注意區分哪些是代碼哪些是注釋,
x1 =
[-3,-2.7,-2.4,-2.1,-1.8,-1.5,-1.2,-0.9,-0.6,-0.3,0,0.3,0.6,0.9,1.2,1.5,1.8]; %x1:x1 = -3:0.3:2;
x2 =
[-2,-1.8,-1.6,-1.4,-1.2,-1,-0.8,-0.6,-0.4,-0.2,-2.2204,0.2,0.4,0.6,0.8,1,1.2];%x2:x2 = -2:0.2:1.2;
y = [0.6589,0.2206,-0.1635,-0.4712,-0.6858,-0.7975,-0.8040,...

-0.7113,-0.5326,-0.2875
,0,0.3035,0.5966,0.8553,1.0600,1.1975,1.2618]; %y:
y = sin(x1)+0.2*x2.*x2;
inputData = [x1;x2]; %將x1,x2作為輸入數據

outputData = y; %將y作為輸出數據

%使用用輸入輸出數據(inputData、outputData)建立網路,

%隱節點個數設為3.其中隱層、輸出層的傳遞函數分別為tansig和purelin,使用trainlm方法訓練。
net = newff(inputData,outputData,3,{'tansig','purelin'},'trainlm');

%設置一些常用參數
net.trainparam.goal = 0.0001;
%訓練目標:均方誤差低於0.0001
net.trainparam.show = 400; %每訓練400次展示一次結果
net.trainparam.epochs = 15000;
%最大訓練次數:15000.
[net,tr] = train(net,inputData,outputData);%調用matlab神經網路工具箱自帶的train函數訓練網路
simout = sim(net,inputData);
%調用matlab神經網路工具箱自帶的sim函數得到網路的預測值
figure; %新建畫圖窗口窗口
t=1:length(simout);
plot(t,y,t,simout,'r')%畫圖,對比原來的y和網路預測的y

❻ BP神經網路預測代碼

你這是在做時間序列呢。

你可以去《神經網路之家》nnetinfo----》學習教程二--->神經網路在時間序列上的應用
上面有講解。我把代碼摘抄給你

% time series:神經網路在時間序列上的應用

% 本代碼出自《神經網路之家》

timeList = 0 :0.01 : 2*pi; %生成時間點

X = sin(timeList); %生成時間序列信號

%利用x(t-5),x(t-4),x(t-3),x(t-2),x(t-1)作為輸入預測x(t),將x(t)作為輸出數據

inputData = [X(1:end-5);X(2:end-4);X(3:end-3);X(4:end-2);X(5:end-1)];

outputData = X(6:end);

%使用用輸入輸出數據(inputData、outputData)建立網路,

%隱節點個數設為3.其中隱層、輸出層的傳遞函數分別為tansig和purelin,使用trainlm方法訓練。

net = newff(inputData,outputData,3,{'tansig','purelin'},'trainlm');

%設置一些常用參數

net.trainparam.goal = 0.0001; %訓練目標:均方誤差低於0.0001

net.trainparam.show = 400; %每訓練400次展示一次結果

net.trainparam.epochs = 1500; %最大訓練次數:15000.

[net,tr] = train(net,inputData,outputData);%調用matlab神經網路工具箱自帶的train函數訓練網路

simout = sim(net,inputData); %調用matlab神經網路工具箱自帶的sim函數得到網路的預測值

figure; %新建畫圖窗口窗口

t=1:length(simout);

plot(t,outputData,t,simout,'r')%畫圖,對比原來的輸出和網路預測的輸出

%------------------附加:抽取數學表達式----------------------------top

%希望脫離matlab的sim函數來使用訓練好網路的話,可以抽取出數學的表達式,|

%這樣在任何軟體中,只需要按表達式計算即可。 |

%============抽取數學表達式==================

%抽取出網路的權值和閾值

w12 = net.iw{1,1}; %第1層(輸入層)到第2層(隱層)的權值

b2 = net.b{1}; %第2層(隱層)的閾值

w23 = net.lw{2,1}; %第2層(隱層)到第3層(輸出層)的權值

b3 = net.b{2}; %第3層(輸出層)的閾值

%由於有歸一化,必須先將歸一化信息抓取出來

iMax = max(inputData,[],2);

iMin = min(inputData,[],2);

oMax = max(outputData,[],2);

oMin = min(outputData,[],2);

%方法1:歸一化--->計算輸出--->反歸一化

normInputData=2*(inputData -repmat(iMin,1,size(inputData,2)))./repmat(iMax-iMin,1,size(inputData,2)) -1;

tmp = w23*tansig( w12 *normInputData + repmat(b2,1,size(normInputData,2))) + repmat(b3,1,size(normInputData,2));

myY = (tmp+1).*repmat(oMax-oMin,1,size(outputData,2))./2 + repmat(oMin,1,size(outputData,2));

%方法2:用真正的權值和閾值進行計算

%公式請參考《提取對應原始數據的權重和閾值》

W12 = w12 * 2 ./repmat(iMax' -iMin',size(w12,1),1);

B2 = -w12* (2*iMin ./(iMax - iMin) + 1) + b2;

W23 = w23 .*repmat((oMax -oMin),1,size(w23,2))/2;

B3 = (oMax -oMin) .*b3 /2 + (oMax -oMin)/2 + oMin;

%最終的數學表達式:

myY2 = W23 *tansig( W12 *inputData + repmat(B2,1,size(inputData,2))) + repmat(B3,1,size(inputData,2));

❼ 請教大神我的這個關於BP神經網路的MATLAB代碼究竟出了什麼錯

clear;
clc;
shuru=[1305554.51 662938.89 877648.23 955254.91 1182286.47 605157.99 769639.28 1000855.67 1567936.19 712892.06 995621.47 1210817.23 1824825.89 805095.78 1357303.95 1913573.98 2221913.29 988940.37 1520540.25;
-535933.67 -265478.17 -358139.96 -390311.91 -484727.57 -240666.79 -312753.06 -408491.77 -644476.31 -284092.72 -405644.61 -495278.31 -750743.05 -320627.06 -555553.68 -786731.21 -914786.21 -395704.62 -622816.59;
190253.14 97770.16 127640.62 138952.91 172150.18 89252.23 111812.5 145619.16 228386.33 105038.33 144834.43 176107.03 265871.87 118663.71 197368.22 278538.97 323968.44 145708.66 220970.77 ];%'; %/(')for zhuan
% 此處不能轉置,matlab神經網路工具箱默認是以列為一個樣本,所以此處shuru矩陣應為19*3

shuchu=[7510 7907 7432 6989 6760 7124 7548 7422 8333 8333 9375 11011 12045 13207 13592 13530 13963 15819 16118];
% 相對應的是shuchu的列數也應等於19

% 額外提醒:鑒於你給的數據量綱之間差別太大,最好進行歸一化處理

net = newff(shuru,shuchu,19,{'tansig'},'trainscg');% 注意這是R2012b版本的newff函數,與以前版本的應用格式有點不同,所以會出現:NEWFF used in an obsolete way.的錯誤
% 另外輸入和輸出的矩陣必須保證列相等,因為它是以一列作為一個樣本,在這個程序中,是3個輸入對應一個輸出,所以19個樣本輸入對應19個樣本輸出

net.divideParam.trainRatio=1; % 訓練集所佔總樣本的比重
net.divideParam.valRatio=0; % 驗證集所佔總樣本的比重
net.divideParam.testRatio=0; % 測試集所佔總樣本的比重
net.trainParam.show=50;% 顯示步長
net.trainParam.lr=0.0001; % 學習速率
net.trainParam.epochs=800; % 最大迭代次數
net.trainParam.goal=0.00000001; % 訓練目標,一般是用均方差(mse)來作為訓練目標
[net,tr]=train(net,shuru,shuchu);

net.iw{1,1};%隱層權值
net.b{1};%隱層閾值

net.lw{2,1};%輸出層權值
net.b{2};%輸出層閾值

Pre=sim(net,shuru);
rr=corrcoef(shuchu,Pre); %線性相關系數
figure
plot(shuchu,'g');
hold on
plot(Pre,'r');
figure
plot(shuchu,Pre,'*');
title(['線性相關系數r=',num2str(rr(1,2))]);
xlabel('shuchu');
ylabel('PredictData');

❽ matlab神經網路工具箱訓練出來的函數,怎麼輸出得到函數代碼段

神經網路訓練出來的是權值矩陣
我想你是想在matlab外用訓練好的神經網路
首先你要在外部實現神內經網路演算法
之後你把神容經網路訓練出來的權值矩陣讀取到你在外部實現的神經網路演算法中
然後你就可以使用這個神經網路了

❾ matlab中bp神經網路的工具箱怎麼用,不要matlab程序,就工具箱怎麼實現問題的解決

matlab中神經網路的工具箱:輸入nntool,就會彈出一個對話框,然後你就可以根據彈出框的指示來操作。

❿ BP神經網路matlab源程序代碼講解

newff 創建前向BP網路格式:
net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF)

其中:PR —— R維輸入元素的×2階最大最小值矩陣; Si —— 第i層神經元的個數,共N1層; TFi——第i層的轉移函數,默認『tansig』; BTF—— BP網路的訓練函數,默認『trainlm』; BLF—— BP權值/偏差學習函數,默認』learngdm』 PF ——性能函數,默認『mse』;(誤差)

e.g.
P = [0 1 2 3 4 5 6 7 8 9 10];T = [0 1 2 3 4 3 2 1 2 3 4];
net = newff([0 10],[5 1],{'tansig' 'purelin'});net.trainparam.show=50; %每次循環50次net.trainParam.epochs = 500; %最大循環500次
net.trainparam.goal=0.01; %期望目標誤差最小值
net = train(net,P,T); %對網路進行反復訓練
Y = sim(net,P)Figure % 打開另外一個圖形窗口
plot(P,T,P,Y,'o')

閱讀全文

與bp神經網路工具箱的代碼相關的資料

熱點內容
winform工具箱 瀏覽:412
實驗室固液萃取的裝置 瀏覽:1
裝置中空試管的作用 瀏覽:529
超聲波是如何產生的有什麼特點 瀏覽:118
matlabneuralnetworktoolbox工具箱 瀏覽:331
南通電動工具塑殼 瀏覽:919
奧迪A6L廢氣閥門壞了沒修 瀏覽:298
交流串入直流報警裝置檢測原理 瀏覽:860
哪個牌子的定製游樂設備 瀏覽:634
cad怎麼畫機櫃設備擺放 瀏覽:139
機械落地扇怎麼拆 瀏覽:963
超聲波液位計怎麼裝 瀏覽:511
汽車儀表燈標志都代表什麼 瀏覽:703
sr什麼設備 瀏覽:166
鄭州市鄭高閥門製造有限公司怎麼樣 瀏覽:307
機械什麼武器好 瀏覽:129
鋁板如何安裝軸承視頻 瀏覽:236
製冷機壓縮機壞了怎麼辦 瀏覽:123
pe工具箱軟體 瀏覽:570
泰安市哪裡有賣機械設備 瀏覽:818