?? bp.m
字號:
%X為輸入樣本,T為目標向量
clc,clear,tic
x=rands(8,8);
d=rand(1,8);
[n,P]=size(x) ; %R=2;Q=8為X陣的維數;
[S,l]=size(d) ; %S=1;Q=8為T陣的維數;
q=0;p=1;
m=4;h=0.9;e=1e-10;Erme0=100;Erme=10;dw=zeros(m,l);dv=zeros(n,m);
v=rands(n,m);
w=rands(m,l);
while Erme0>=e & q<5000
q=q+1;
for p=1:P
for j=1:m
netj(j)=-1;
for j1=1:n
netj(j)=netj(j)+v(j1,j)*x(j1,p);
end
y(j)=1/(1+exp(-netj(j)));
end
for k=1:l
netk(k)=-1;
for j1=1:m
netk(k)=netk(k)+w(j1,k)*netj(j1);
end
o(k)=1/(1+exp(-netk(k)));
end
E(p)=0;
for k=1:l
E(p)=E(p)+(d(k)-o(k))^2;
do(k)=(d(k)-o(k))*(1-o(k))*o(k);
end
E(p)=sqrt(E(p));
for j=1:m
dy(j)=0;
for k=1:l
dy(j)=dy(j)+do(k)*w(j,k);
end
dy(j)=dy(j)*(1-y(j))*y(j);
end
for j=1:m
for k=1:l
w(j,k)=w(j,k)+h*do(k)*y(j);
end
end
for i=1:n
for j=1:m
v(i,j)=v(i,j)+h*dy(j)*x(i,p);
end
end
end
Erme1=Erme;Erme=0;
for p=1:P
Erme=Erme+E(p)^2;
end
Erme=sqrt(Erme/P);
Erme0=abs(Erme-Erme1);
end
disp(['期望輸出:',num2str(d)])
disp(['實際輸出:',num2str(o)])
disp(['輸出誤差:',num2str(E(p))])
disp(['訓練次數:',num2str(q)])
disp('權值W:')
disp(num2str(w))
disp('權值V:')
disp(num2str(v'))
toc
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
增大字號
Ctrl + =
減小字號
Ctrl + -