z7 2neur 1neur M


%Siec dwuwarstwowa - dwie klasy
%Aproksymacja liniowa
clear
osie=[-20 20 -10 10];
L=6;
u1=[-4 0];
u2=[5 2];
u3=[2 -5];
u4=[-10 6];
u5=[0 8];
u6=[0 -8];
P=[u1;u2;u3;u4;u5;u6]'
U=[ones(6,1) P']
%det(U'*U)
z=[-1 ;-1 ;-1;1;1;1];
disp('Rozwiazanie analityczne')
w=inv(U'*U)*U'*z
wp=w;
r=U*w-z;
disp('Błąd aproksymacji')
r=r'*r

figure(1);clf;
subplot(2,2,1);
newplot;
hold on;
[lw,lk]=size(P);
kolor1='bs';
kolor2='ro';
for licz=1:lk;
if z(licz)<=0
plot(P(1,licz),P(2,licz),kolor2);
else
plot(P(1,licz),P(2,licz),kolor1);
end;
end;


kolor=['m-'];
wrys=w;
rprosta(wrys,osie,kolor);
title('Analityczna dyskryminacja liniowa');


z2=[-1 -1 ;-1 -1;-1 -1;1 -1;1 -1;-1 1];
disp('Rozwiazanie analityczne')
w=inv(U'*U)*U'*z2

w1=w(:,1);
w2=w(:,2);
rprosta(w1,osie,'b--');
rprosta(w2,osie,'b-');
title('Analityczna dyskryminacja liniowa');




%%%Funkcje TOOLBOXa


% TRAINLM is a network training function
% that updates weight and bias values according to Levenberg-Marquardt optimization.
% You can create a standard network that uses TRAINLM with NEWFF.



zakresy=[-20 20; -10 10]
net=newff(zakresy,[2,1],{'tansig','purelin'});
%
% net.trainParam.epochs = 400;
% net.trainParam.show = 20;
% net.adaptFcn: 'trainb'

T=z'
net = train(net,P,T);

disp('Wynik uczenia');
%kolejne neurony w kolejnych wierszach
disp('Pierwsza warstwa')
net.iw{1,1}
net.b{1}

disp('Druga warstwa')
net.lw{2,1}
net.b(2)


%Test
wynik=sim(net,P)
disp('Weryfikacja wyniku');
[T;wynik]



figure(1);
subplot(2,2,2);
newplot;
axis(osie);
hold on;
[lw,lk]=size(P);
kolor1='bs';kolor1a='bo';
kolor2='ro';kolor2a='rs';
for licz=1:lk;
if wynik(licz)<=0
if z(licz)<=0
plot(P(1,licz),P(2,licz),kolor2);
else
plot(P(1,licz),P(2,licz),kolor2a);
end;
else
if z(licz)>0
plot(P(1,licz),P(2,licz),kolor1);
else
plot(P(1,licz),P(2,licz),kolor1a);
end;
end;
end;
title('Weryfikacja uczenia w sieci 2-warstwowej')





figure(1);
subplot(2,2,3);
newplot;
axis(osie);
hold on;
[lw,lk]=size(P);
kolor1='bs';kolor1a='bo';
kolor2='ro';kolor2a='rs';
for licz=1:lk;
if wynik(licz)<=0
if z(licz)<=0
plot(P(1,licz),P(2,licz),kolor2);
else
plot(P(1,licz),P(2,licz),kolor2a);
end;
else
if z(licz)>0
plot(P(1,licz),P(2,licz),kolor1);
else
plot(P(1,licz),P(2,licz),kolor1a);
end;
end;
end;
title('Weryfikacja pierwszej warstwy')
%kolejne neurony w kolejnych wierszach
wrys(2:3)=net.iw{1,1}(1,:);
wrys(1)=net.b{1}(1);
kolor=['b-'];
rprosta(wrys,osie,kolor);

wrys(2:3)=net.iw{1,1}(2,:);
wrys(1)=net.b{1}(2);
kolor=['b--'];
rprosta(wrys,osie,kolor);


hold off;

%Odczytywanie struktury neuronu z wyników obliczeń

%Symulacja pierwszego neuronu pierwszej warstwy
w1=zeros(3,1);
w1(2:3)=net.iw{1,1}(1,:);
w1(1)=net.b{1}(1);
%disp('Wyjscie pierwszego neuronu pierwszej warstwy');
y1=U*w1;

%Symulacja drugiego neuronu pierwszej warstwy
w2=zeros(3,1);
w2(2:3)=net.iw{1,1}(2,:);
w2(1)=net.b{1}(2);
%disp('Wyjscie drugiego neuronu pierwszej warstwy');
y2=U*w2;
disp('Wyjścia pierwszej warstwy');
Y=[y1,y2];
Yf=tansig(Y)



figure(1);
subplot(2,2,4);
newplot;
hold on;
oski=2*[floor(min(Yf(:,1))),ceil(max(Yf(:,1))), floor(min(Yf(:,2))),ceil(max(Yf(:,2)))];
axis(oski);
[lw,lk]=size(Yf);
kolor1='bs';
kolor2='ro';
for licz=1:lw;
if z(licz)<=0
plot(Yf(licz,1),Yf(licz,2),kolor2);
else
plot(Yf(licz,1),Yf(licz,2),kolor1);
end;
end;


kolor=['m-'];
wrys=zeros(3,1);
wrys(2:3)=net.lw{2,1}(1,:);
wrys(1)=net.b{2}(1);
rprosta(wrys,oski,kolor);
title('Weryfikacja drugiej warstwy');

disp('Weryfikacja rachunkowa wyjsc drugiej warstwy')
Yk=[ones(size(y1)) Yf]
Q=Yk*wrys;

[T',Q]


Wyszukiwarka

Podobne podstrony:
SPD1 z7
asm z7 dir
badanie zaleznosci z7
count z7
count z7
SPD1 z7
Z7
GI MTR Z7(2010)
z7
z7
z7

więcej podobnych podstron