?? bp預測.m
字號:
%N=input(\'設定隱含層神經元個數:\\n\');
%maxecho=input(\'最大訓練回合數\');
%網絡初始化
N=4;%可以自己設定
maxecho=4000;
h=0.4;%學習速率
%輸入訓練樣本[x,y]
TS=[];
%輸入預測樣本[x,y]
PS=[];
[tsm,tsn]=size(TS);
p=TS(:,1:tsn-1); %提取供訓練的x
t(:,1)=TS(:,tsn);%提取供訓練的y
[pm,pn]=size(p);
inw=randn(N,pn+1);%輸入-隱含權值矩陣,輸入并加上了偏置一列
ins=zeros(N,1);%隱含得到的誘導矩陣
outg=zeros(N,1);%反向傳到回至輸入的delta值
outs=zeros(N,1);%隱含輸出的矩陣
outw=randn(1,N+1);%隱含輸出權值矩陣(加上一個偏置)
outv=zeros(1,1);%輸出得到的誘導矩陣
outy=zeros(1,1);
backg=zeros(1,1);%反向傳至隱含層的delta值
%m=1;
n=0;
%開始樣本訓練
%for x=1:maxecho
while(n0.0002)
%m=0;
for i=1:pm
ins=inw*[p(i,:)\';1];
outs=1./(1+exp(-ins));
outv=outw*[outs;1];
outy=1./(1+exp(-outv));
pout(i,1)=outy; %網絡學習的輸出
backg=(t(i,1)-outy)*(outy.*(1-outy));
outg=(outs.*(1-outs)).*(outw(:,1:N)\'*backg);
outw=outw+h*backg*[outs;1]\';
inw=inw+h*outg*[p(i,:),1];
%m=m+(t(i,1)-outy)^2;
end
n=n+1;
end
%開始樣本測試
[psm,psn]=size(PS);
textp=PS(:,1:psn-1);%供預測的x
textt(:,1)=PS(:,psn); %供預測的y
[tm,tn]=size(textp);
for i=1:tm
ins=inw*[textp(i,:)\';1];
outs=1./(1+exp(-ins));
outv=outw*[outs;1];
outy=1./(1+exp(-outv));
textout(i,1)=outy; %預測輸出y
% error(i,1)=abs(textt(i,1)-textout(i,1));
end
y1=pout;
y2=textout;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -