📄 problem2.m
字号:
P=[1 0 3 2 2 1 -1 -2 -1;
1 2 1 -1 0 -2 2 1 1];
T=[0 0 0 0 0 0 1 1 1;
0 0 0 1 1 1 0 0 0];
plotpv(P,T);
net=newp([-3 3;-3 3],2);
figure;
watchon;
cla;
plotpv(P,T);
linehandle=plotpc(net.IW{1},net.b{1});
E=1;
net=init(net);
linehandle=plotpc(net.IW{1},net.b{1});
while(sse(E))
[net,Y,E]=adapt(net,P,T);
linehandle=plotpc(net.IW{1},net.b{1},linehandle);
drawnow;
end;
watchoff;
figure;
%------------------------------------------------
% different a turns out different epoch:
%------------------------------------------------
err_goal=0.001; a=1;a
max_epoch=1000;
X=[1 0 3 2 2 1 -1 -2 -1;
1 2 1 -1 0 -2 2 1 1];
T=[0 0 0 0 0 0 1 1 1;
0 0 0 1 1 1 0 0 0];
[M,N]=size(X);[L,N]=size(T);
Wij=[0 0; 0 0]; y=0;b=[0;0];
for epoch=1:max_epoch
NETi=Wij*X;
for j=1:N
for i=1:L
if (NETi(i,j)>=b(i))
y(i,j)=1;
else
y(i,j)=0;
end
end
end
E=(T-y);EE=0;
%aa=zeros(1,N);
for j=1:N
EE=EE+abs(E(j));
%aa(j)=E(j);
%plot(j,EE);
% hold on;
end
% bb=[1 2 3 4 5 6 7 8 9];
%plot(bb,E);
EE
%plot(epoch,EE);
% hold on;
if (EE<err_goal)break;end
Wij=Wij+a*E*X';
b=b+a*sqrt(EE);
end
epoch,Wij,b
%------------------------------------------------
%------------------------------------------------
err_goal=0.001; a=0.8;a
max_epoch=1000;
X=[1 0 3 2 2 1 -1 -2 -1;
1 2 1 -1 0 -2 2 1 1];
T=[0 0 0 0 0 0 1 1 1;
0 0 0 1 1 1 0 0 0];
[M,N]=size(X);[L,N]=size(T);
Wij=[0 0; 0 0]; y=0;b=[0;0];
for epoch=1:max_epoch
NETi=Wij*X;
for j=1:N
for i=1:L
if (NETi(i,j)>=b(i))
y(i,j)=1;
else
y(i,j)=0;
end
end
end
E=(T-y);EE=0;
for j=1:N
EE=EE+abs(E(j));
end
EE
if (EE<err_goal)break;end
Wij=Wij+a*E*X';
b=b+a*sqrt(EE);
end
epoch,Wij,b
%------------------------------------------------
%------------------------------------------------
err_goal=0.001; a=0.5;a
max_epoch=1000;
X=[1 0 3 2 2 1 -1 -2 -1;
1 2 1 -1 0 -2 2 1 1];
T=[0 0 0 0 0 0 1 1 1;
0 0 0 1 1 1 0 0 0];
[M,N]=size(X);[L,N]=size(T);
Wij=[0 0; 0 0]; y=0;b=[0;0];
for epoch=1:max_epoch
NETi=Wij*X;
for j=1:N
for i=1:L
if (NETi(i,j)>=b(i))
y(i,j)=1;
else
y(i,j)=0;
end
end
end
E=(T-y);EE=0;
for j=1:N
EE=EE+abs(E(j));
end
EE
if (EE<err_goal)break;end
Wij=Wij+a*E*X';
b=b+a*sqrt(EE);
end
epoch,Wij,b
%------------------------------------------------
%------------------------------------------------
err_goal=0.001; a=0.2;a
max_epoch=1000;
X=[1 0 3 2 2 1 -1 -2 -1;
1 2 1 -1 0 -2 2 1 1];
T=[0 0 0 0 0 0 1 1 1;
0 0 0 1 1 1 0 0 0];
[M,N]=size(X);[L,N]=size(T);
Wij=[0 0; 0 0]; y=0;b=[0;0];
for epoch=1:max_epoch
NETi=Wij*X;
for j=1:N
for i=1:L
if (NETi(i,j)+b(i)>=0)
y(i,j)=1;
else
y(i,j)=0;
end
end
end
E=(T-y);EE=0;
for j=1:N
EE=EE+abs(E(j));
end
EE
if (EE<err_goal)break;end
Wij=Wij+a*E*X';
b=b+a*sqrt(EE);
%plot(epoch,EE);
%hold on;
end
epoch,Wij,b
%------------------------------------------------
% draw pic:
%------------------------------------------------
a=1;a
x=[8,0];
plot(x,'r');
hold on;
a=0.2;a
y=[8,1,0];
plot(y);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -