⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 problem2.m

📁 matlab 感知机实验源码(神经网络课程实验一)
💻 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 + -