Sunteți pe pagina 1din 32

Laboratorul Numrul 1 Perceptronul

B. Proiectai o reea neuronal artificial pentru realizarea funciei logice AND cu


dou intrri. Aplicai algoritmul de antrenare adapt. Desenai reeaua i notai
ponderile finale.
Definesc RNA cu dou intrri i un singur neuron. Valorile minime i maxime pe
care le pot lua cele dou intrri sunt 1 respectiv 0. RNA am creat-o n Matlab cu
ajutorul funciei newp.
>> net=newp([0 1;0 1],1);

Stabilesc valoarea polarizrii la 0.25 respectiv atribui valorile iniiale ponderilor de


interconectare care sunt 0 respectiv 0.4.
>> net.b{1}=[0.25];
>> net.IW{1,1}=[0 0.4];

Am definit vectorul de intrare din setul de date de antrenare respectiv valoarea dorit
sau inta n secvene (tablouri ntre acolade).
>> i={[0;0] [0;1] [1;0] [1;1]};
>> t={0 0 0 1};

Am verificat valorile iniiale ale polarizrii i ponderilor de interconectare pentru a


vedea dac corespund cu cele setate anterior.
>> net.b{1}
ans =
0.25
>> net.IW{1,1}
ans =
0

0.4000

Am setat numrul de iteraii la 1 astfel nct funcia adapt va aplica vectorul de


intrare i o singur dat.
>> net.trainParam.passes=1;

Antrenez reeaua cu funcia adapt i determin ieirea curent y1 respectiv eroarea


e1.
>> [net,y1,e1]=adapt(net,i,t)

y1 =
[1]

[0]

[0]

[0]

e1 =
[-1]

[0]

[0]

[1]

Se observ c ieirea curent y1 este diferit de ieirea int t prin urmare antrenez
n continuarea reeaua.
Noile ponderi sunt i polzarizarea sunt:
>> net.IW{1,1}
ans =
1.0000

1.4000

>> net.b{1}
ans =
0.2500

Antrenez n continuarea reeaua i determin ieirea curent y2 respectiv eroarea e2.


>> [net,y2,e2]=adapt(net,i,t)
y2 =
[1]

[1]

[0]

[0]

e2 =
[-1]

[-1]

[0]

[1]

Ieirea curent y2 este diferit de ieirea int t prin urmare antrenez n continuare
reeaua.
Calculez noile valori ale ponderilor i polarizarea:
>> net.IW{1,1}
ans =
2.0000

1.4000

>> net.b{1}
ans =
-0.7500

Antrenez n continuare reeaua i determin ieirea curent y3 respectiv eroarea e3.

>> [net,y3,e3]=adapt(net,i,t)
y3 =
[0]

[1]

[1]

[0]

e3 =
[0]

[-1]

[-1]

[1]

Ieirea curent y3 este diferit de ieirea dorit t prin urmare antrenez n continuare
reeaua.
Calculez noile valori ale ponderilor, i polarizarea:
>> net.IW{1,1}
ans =
2.0000

1.4000

>> net.b{1}
ans =
-1.7500

Antrenez n continuare reeaua i determin ieirea curent y4 respectiv eroarea e4.


>> [net,y4,e4]=adapt(net,i,t)
y4 =
[0]

[0]

[1]

[0]

[-1]

[0]

e4 =
[0]

[1]

Ieirea curent y4 este diferit de valoarea dorit t prin urmare antrenz n continuare
reeaua.
Calculez noile valori ale ponderilor, i polarizarea:
>> net.IW{1,1}
ans =
2.0000

2.4000

>> net.b{1}
ans =
-1.7500

Antrenez n continuarea reeaua i determin ieirea curent y5 respectiv eroarea e5.


>> [net,y5,e5]=adapt(net,i,t)
y5 =
[0]

[1]

[0]

[1]

e5 =
[0]

[-1]

[0]

[0]

Ieirea curent y5 este diferit de ieirea dorit t deci antrenez n continuare reeaua.
Calculez valorile noilor ponderi i polarizarea:
>> net.IW{1,1}
ans =
2.0000

1.4000

>> net.b{1}
ans =
-2.7500

Antrenez reeaua n continuare i determin ieirea curent y6 respectiv eroarea e6.


>> [net,y6,e6]=adapt(net,i,t)
y6 =
[0]

[0]

[0]

[1]

[0]

[0]

[0]

e6 =
[0]

Se poate observa c ieirea curent y6 coincide cu ieirea dorit t, prin urmare


reeaua este convergent i produce ieirile dorite, pentru toi vectorii de intrare.
Calculm valorile finale ale ponderilor, i polarizarea:
>> net.IW{1,1}
ans =
2.0000

1.4000

>> net.b{1}
ans =
-2.7500

Simulm reeua antrenat pentru fiecare intrare.


>> y=sim(net,i)
y=
[0]

[0]

[0]

[1]

Pentru verificare calculm eroarea pentru fiecare intrare.


>> eroarea={y{1}-t{1} y{2}-t{2} y{3}-t{3} y{4}-t{4}}
eroarea =
[0]

[0]

[0]

[0]

Desenm RNA pentru funcia logic AND cu dou intrri i trasm ponderile de
interconectare.

RNA pentru funcia logic AND


C. Proiectai o reea neuronal artificial pentru realizarea funciei logice OR cu dou
intrri. Aplicai algoritmul de antrenare adapt. Desenai reeaua i notai ponderile
finale.
Definesc RNA cu dou intrri i un singur neuron. Valorile minime i maxime pe
care le pot lua cele dou intrri sunt 1 respectiv 0. RNA am creat-o n Matlab cu
ajutorul funciei newp.
>> net=newp([0 1;0 1],1);
Stabilesc valoarea polarizrii la 0 respectiv atribui valorile iniiale ponderilor de
interconectare care sunt 0.2 respectiv 0.35.
>> net.b{1}=[0];
>> net.IW{1,1}=[0.2 0.35];

Am definit vectorul de intrare din setul de date de antrenare respectiv valoarea dorit
sau inta n secvene (tablouri ntre acolade).
>> i={[0;0] [0;1] [1;0] [1;1]};
>> t={1 1 1 0};
Am verificat valorile iniiale ale polarizrii i ponderilor de interconectare pentru a
vedea dac corespund cu cele setate anterior.
>> net.b{1}
ans =
0
>> net.IW{1,1}
ans =
0.2000 0.3500
Am setat numrul de iteraii la 1 astfel nct funcia adapt va aplica vectorul de
intrare i o singur dat.
>> net.trainParam.passes=1;
Antrenez reeaua cu funcia adapt i determin ieirea curent y1 respectiv eroarea
e1.
>> [net,y1,e1]=adapt(net,i,t)
y1 =
[1]

[1]

[1]

[1]

[0]

[0]

[-1]

e1 =
[0]

Se observ c ieirea curent y1 este diferit de ieirea int t prin urmare antrenez
n continuarea reeaua.
Noile ponderi i polzarizarea sunt:
>> net.IW{1,1}
ans =
-0.8000 -0.6500

>> net.b{1}
ans =
-1
Antrenez n continuarea reeaua i determin ieirea curent y2 respectiv eroarea e2.
>> [net,y2,e2]=adapt(net,i,t)
y2 =
[0]

[0]

[1]

[1]

[1]

[0]

[-1]

e2 =
[1]

Ieirea curent y2 este diferit de ieirea int t prin urmare antrenez n continuare
reeaua.
Calculez noile valori ale ponderilor i polarizarea:
>> net.b{1}
ans =
0
>> net.IW{1,1}
ans =
-1.8000 -0.6500
Antrenez n continuare reeaua i determin ieirea curent y3 respectiv eroarea e3.
>> [net,y3,e3]=adapt(net,i,t)
y3 =
[1]

[0]

[0]

[1]

[1]

[1]

[-1]

e3 =
[0]

Ieirea curent y3 este diferit de ieirea dorit t prin urmare antrenez n continuare
reeaua.
Calculez noile valori ale ponderilor, i polarizarea:

>> net.b{1}
ans =
1
>> net.IW{1,1}
ans =
-1.8000 -0.6500
Antrenez n continuare reeaua i determin ieirea curent y4 respectiv eroarea e4.
>> [net,y4,e4]=adapt(net,i,t)
y4 =
[1]

[1]

[0]

[1]

[0]

[1]

[-1]

e4 =
[0]

Ieirea curent y4 este diferit de valoarea dorit t prin urmare antrenez n continuare
reeaua.
Calculez noile valori ale ponderilor, i polarizarea:
>> net.b{1}
ans =
1
>> net.IW{1,1}
ans =
-1.8000 -1.6500
Antrenez n continuarea reeaua i determin ieirea curent y5 respectiv eroarea e5.
>> [net,y5,e5]=adapt(net,i,t)
y5 =
[1]
e5 =

[0]

[1]

[0]

[0]

[1]

[0]

[0]

Ieirea curent y5 este diferit de ieirea dorit t deci antrenez n continuare reeaua.
Calculez valorile noilor ponderi i polarizarea:
>> net.b{1}
ans =
2
>> net.IW{1,1}
ans =
-1.8000 -0.6500
Antrenez reeaua n continuare i determin ieirea curent y6 respectiv eroarea e6.
>> [net,y6,e6]=adapt(net,i,t)
y6 =
[1]

[1]

[1]

[0]

[0]

[0]

[0]

e6 =
[0]

Se poate observa c ieirea curent y6 coincide cu ieirea dorit t, prin urmare


reeaua este convergent i produce ieirile dorite, pentru toi vectorii de intrare.
Calculm valorile finale ale ponderilor, i polarizarea:
>> net.b{1}
ans =
2
>> net.IW{1,1}
ans =
-1.8000 -0.6500
Simulm reeua antrenat pentru fiecare intrare.
>> y=sim(net,i)

y=
[1]

[1]

[1]

[0]

Pentru verificare calculm eroarea pentru fiecare intrare.


>> eroarea={y{1}-t{1} y{2}-t{2} y{3}-t{3} y{4}-t{4}}
eroarea =
[0]

[0]

[0]

[0]

Desenm RNA pentru funcia logic OR cu dou intrri i trasm ponderile de


interconectare.

RNA pentru funcia logic OR


D. Proiectai o reea neuronal artificial pentru realizarea unui detector de paritate
cu patru intrri. Ieirea 1 numai dac numrul de intrri 1 este par. Aplicai
algoritmul de antrenare adapt. Desenai reeaua i notai ponderile finale.
Definesc reeaua n Matlab cu ajutorul funciei newp:
>> net=newp([0 1;0 1;0 1;0 1],1);
Setez valorile iniiale ale polarizrii i ale ponderilor de interconectare:
>> net.b{1}=[0.7];
>> net.IW{1,1}=[0.12 0.24 0.32 0.47];
Definesc vectorul semnalelor de intrare i vectorul ieirii dorite sau int:
>> i={[0;0;0;0] [0;0;0;1] [0;0;1;0] [0;0;1;1] [0;1;0;0] [0;1;0;1] [0;1;1;0]
[0;1;1;1] [1;0;0;0] [1;0;0;1] [1;0;1;0] [1;0;1;1] [1;1;0;0] [1;1;0;1] [1;1;1;0]
[1;1;1;1]};
>> t={0 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1};

Verific dac ponderile respectiv polarizarea au fost setate corect:


>> net.b{1}
ans =
0.7000
>> net.IW{1,1}
ans =
0.1200 0.2400 0.3200 0.4700
Am setat numrul de iteraii la 1 astfel nct funcia adapt va aplica vectorul de
intrare i o singur dat.
>> net.trainParam.passes=1;
Antrenez reeaua cu funcia adapt:
>> [net,y1,e1]=adapt(net,i,t)
Claculez ieirea curent i eroarea pentru prima iteraie de calcul:
y1 =
[1] [1] [0] [0] [0] [1] [1] [1] [0] [0] [1] [1] [0] [1] [0]
[0]
e1 =
[-1] [-1]
[0] [1]

[0] [1]

[0]

[0]

[0]

[-1]

[0]

[1]

[0] [-1]

[1] [-1]

Calculez valorile polarizrii i ponderilor de interconectare pentru prima iteraie:


>> net.b{1}
ans =
-0.3000
>> net.IW{1,1}
ans =
1.1200 0.2400 0.3200 -0.5300

Ieirea curent nu corespunde cu ieirea dorit, prin urmare antrenez n continuare


reeaua:
>> [net,y2,e2]=adapt(net,i,t)
y2 =
[0] [0] [1] [0] [0] [1] [1] [1] [0] [0] [1] [1] [0] [1] [0]
[0]
e2 =
[0] [0]
[0] [1]

[-1]

[1]

[0]

[0]

[0]

[-1]

[0]

[1]

[0]

[-1]

[1]

[-1]

>> net.b{1}
ans =
-0.3000
>> net.IW{1,1}
ans =
2.1200 0.2400 -0.6800 -0.5300
>> [net,y3,e3]=adapt(net,i,t)
y3 =
[0] [0] [0] [0] [1] [0] [1] [1] [1] [1] [0] [1] [0] [1] [0]
[0]
e3 =
[0] [0]
[0] [1]

[0]

[1] [-1]

[1] [0]

>> net.b{1}
ans =
-0.3000
>> net.IW{1,1}
ans =
2.1200 0.2400 0.3200 -0.5300

[-1]

[-1]

[0]

[1]

[-1]

[1] [-1]

>> [net,y4,e4]=adapt(net,i,t)
y4 =
[0] [0] [1] [0] [0] [1] [1] [1] [1] [0] [1] [1] [0] [1] [0]
[0]
e4 =
[0] [0]
[0] [1]

[-1]

[1]

[0]

[0]

[0] [-1]

[-1]

[1]

[0]

[-1]

[1] [-1]

>> net.b{1}
ans =
-1.3000
>> net.IW{1,1}
ans =
2.1200 0.2400 -0.6800 -0.5300
>> [net,y5,e5]=adapt(net,i,t)
y5 =
[0] [0] [0] [0] [0] [1] [1] [1] [1] [0] [1] [1] [0] [1] [0]
[0]
e5 =
[0] [0]
[0] [1]

[0]

[1]

[0]

[0]

[0]

>> net.b{1}
ans =
-1.3000
>> net.IW{1,1}
ans =
2.1200 0.2400 -0.6800 -0.5300
>> [net,y6,e6]=adapt(net,i,t)

[-1]

[-1]

[1]

[0]

[-1]

[1]

[-1]

y6 =
[0] [0] [0] [0] [0] [1] [1] [1] [1] [0] [1] [1] [0] [1] [0]
[0]
e6 =
[0] [0]
[0] [1]

[0]

[1]

[0]

[0]

[0]

[-1]

[-1]

[1]

[0]

[-1]

[1]

[-1]

>> net.b{1}
ans =
-1.3000
>> net.IW{1,1}
ans =
2.1200 0.2400 -0.6800 -0.5300
>> [net,y7,e7]=adapt(net,i,t)
y7 =
[0] [0] [0] [0] [0] [1] [1] [1] [1] [0] [1] [1] [0] [1] [0]
[0]
e7 =
[0] [0]
[0] [1]

[0]

[1]

[0]

[0]

[0]

[-1]

[-1]

[1]

[0]

[-1]

[1]

[-1]

>> net.IW{1,1}
ans =
2.1200 0.2400 -0.6800 -0.5300
>> net.b{1}
ans =
-1.3000
Concluzia privind utilizarea algoritmului adapt pentru proiectarea unei RNA
pentru implementarea unui detector de paritate cu patru intrri este c RNA nu poate
fi antrenat cu algoritmul adapt deoarece la iteraii successive de calcul, ponderile

de interconectare nu se mai actualizeaz (algoritmul de antrenare se oprete) iar


ieirea curent este diferit de ieirea dorit aa cum reiese din iteraiile prezentate
pe parcursul algoritmului adapt.
A. Verificai toate programele descrise n paragrafele anterioare i prezentai
rezultatele n referatul de laborator.
n cele ce urmeaz voi prezenta toate calculele efectuate n cadrul laboratorului 1
mpreun cu verificarea amnunit a fiecrui calcul cu meniunea c am finalizat i
unii algoritmi de calcul din cadrul lucrrii:
Antrenarea adaptiv:
S presupunem c avem urmtoarea problem de clasificare i dorim s o rezolvm
cu un singur perceptron cu dou intrri:
2
2

1
2
1
, t 2 = 1 ); ( p3 = , t 3 = 0 ); ( p4 = , t 4 = 1 )}

2
2
1

{( p1 = , t1 = 0 ); ( p2 =
>> p1=[2;2];
>> p2=[1;-2];
>> p3=[-2;2];
>> p4=[-1;1];
>> t1=[0];
>> t2=[1];
>> t3=[0];
>> t4=[1];
>> w0=[0 0]
w0 =
0

>> b0=[0]
b0 =
0
ncepem prin a calcula ieirea a a perceptronului pentru primul vector de intrare, p1,
folosind ponderile i polarizarea iniiale

>> a=hardlim(w0*p1+b0)
a=
1
Ieirea a nu este egal cu valoarea int t1, aadar vom folosi regula perceptronului
pentru a gsi variaia ponderilor:
>> e=t1-a
e=
-1
>> dw=e*p1'
dw =
-2 -2
>> db=e
db =
-1
Se pot calcula noile ponderi prin:
>> w1=w0+dw
w1 =
-2 -2
>> db=e
db =
-1
>> a=hardlim(w1*p2+b1)
a=
1
>> e=t2-a
e=

0
>> dw=e*p2'
dw =
0

>> db=e
db =
0
>> w2=w1+dw
w2 =
-2 -2
>> b2=b1+db
b2 =
-1
>> a=hardlim(w2*p3+b2)
a=
0
>> e=t3-a
e=
0
>> dw=e*p3'
dw =
0

>> db=e
db =
0
>> w3=w2+dw

w3 =
-2 -2
>> b3=b2+db
b3 =
-1
>> a=hardlim(w3*p4+b3)
a=
0
>> e=t4-a
e=
1
>> dw=e*p4'
dw =
-1

>> db=e
db =
1
>> w4
w4 =
-3 -1
>> w3+dw
ans =
-3 -1
>> b4=b3+db
b4 =
0

>> a=hardlim(w4*p1+b4)
a=
0
>> e=t1-a
e=
0
>> dw=e*p1'
dw =
0

>> db=e
db =
0
>> w5=w4+dw
w5 =
-3 -1
>> b5=b4+db
b5 =
0
>> a=hardlim(w5*p2+b5)
a=
0
>> e=t2-a
e=
1
>> dw=e*p2'
dw =

1 -2
>> db=e
db =
1
>> w6=w5+dw
w6 =
-2 -3
>> b6=b5+1
b6 =
1
>> a=hardlim(w6*p3+b6)
a=
0
>> e=t3-a
e=
0
>> dw=e*p3'
dw =
0

>> db=e
db =
0
>> w7=w6+dw
w7 =
-2 -3
>> b7=b+db

??? Undefined function or variable 'b'.

>> b7=b6+db
b7 =
1
>> a=hardlim(w7*p4+b7)
a=
1
>> e=t4-a
e=
0
>> dw=e*p4'
dw =
0

>> db=e
db =
0
>> w8=w7+dw
w8 =
-2 -3
>> b8=b7+db
b8 =
1
>> a=hardlim(w8*p1+b8)
a=
0

>> e=t2-a
e=
1
>> e=t1-a
e=
0
>> dw=e*p1'
dw =
0

>> db=e
db =
0
>> w9=w8+dw
w9 =
-2 -3
>> b9=b8+db
b9 =
1
>> a=hardlim(w9*p2+b9)
a=
1
>> e=t2-a
e=
0
>> dw=e*p2'
dw =

>> db=e
db =
0
>> w10=w9+db
w10 =
-2 -3
>> b10=b9+db
b10 =
1
Procedeul s-a oprit pentru c s-au obinut valorile finale ale reelei.
Urmtoarele instruciuni definesc un perceptron cu ponderile iniiale egale cu zero.
>> net = newp([-2 2;-2 +2],1);
S considerm mai nti aplicarea unei singure intrri. Vom defini defini primul
vector de intrare i prima int n secvene (tablouri ntre acolade).
>> p = {[2; 2]};
>> t = {0}
t=
[0]
Setm numrul de pai (iteraii) la 1, aa nct adapt va aplica vectorul de intrare
(numai unul, n acest caz) o singur dat.
>> net.adaptParam.passes = 1;
Antrenm reeaua cu:
>> [net,a,e] = adapt(net,p,t)
Ieirea i eroarea returnate sunt
a=
[1]

e=
[-1]
Noile ponderi i polarizarea sunt:
>> twts=net.IW{1,1}
twts =
-2 -2
>> tbiase=net.b{1}
tbiase =
-1
Aadar, ponderile iniiale sunt zero i dup antrenarea cu numai primul vector ele au
valorile [-2 -2] i -1, aa cum au fost calculate i mai nainte. Aplicm apoi al doilea
vector, p2, s.a.m.d.
Urmtoarele instruciuni definesc un perceptron cu ponderile iniiale egale cu zero.
>> net = newp([-2 2;-2 +2],1);
S considerm mai nti aplicarea unei singure intrri.
>> p1=[2;2];
>> p2=[1;-2];
>> p3=[-2;2];
>> p4=[-1;1];
>> t=[0 1 0 1];
Setm numrul de pai (iteraii) la 1, aa nct adapt va aplica vectorul de intrare
(numai unul, n acest caz) o singur dat.
>> net.adaptParam.pases=1;
Antrenm reeaua cu funcia adapt:
>> [net,a,e]=adapt(net,p1,t)
??? Error using ==> network.adapt at 156
Targets are incorrectly sized for network.

Matrix must have 1 columns.

>> t1=[0]
t1 =
0
>> t2=[1];
>> t3=[0];
>> t4=[1];
Aplicm primul vector:
>> [net,a,e]=adapt(net,p1,t1)
a=
1
e=
-1
>> twts=net.IW(1,1}
??? twts=net.IW(1,1}
|
Error: Unbalanced or unexpected parenthesis or bracket.
Noile ponderi i polarizarea sunt:
>> twts=net.IW{1,1}
twts =
-2 -2
>> tbiase=net.b{1}
tbiase =
-1
Aplicm cel de-al doilea vector:

>> [net,a,e]=adapt(net,p2,t2)
a=
1
e=
0
>> net.IW{1,1}
ans =
-2 -2
>> net.b{1}
ans =
-1
>> [net,a,e]=adapt(net,p3,t3)
a=
0
e=
0
>> net.IW{1,1}
ans =
-2 -2
>> net.b{1}
ans =
-1
>> [net,a,e]=adapt(net,p4,t4)
a=
0
e=

1
>> net.IW{1,1}
ans =
-3 -1
>> net.b{1}
ans =
0
>> [net,a,e]=adapt(net,p1,t1)
n
a=
0
e=
0
>> net.IW{1,1}
ans =
-3 -1
>> net.b{1}
ans =
0
>> [net,a,e]=adapt(net,p2,t2)
a=
0
e=
1
>> net.Iw[1,1}
??? net.Iw[1,1}

|
Error: Unbalanced or unexpected parenthesis or bracket.

>> net.IW{1,1}
ans =
-2 -3
>> net.b{1}
ans =
1
>> [net,q,e]=adapt(net,p3,t3)
q=
0
e=
0
>> net.IW{1,1}
ans =
-2 -3
>> net.b{1}
ans =
1
>> [net,a,e]=adapt(net,p4,t4)
a=
1
e=
0
>> net.IW{1,1}

ans =
-2 -3
>> net.b{1}
ans =
1
>> [net,a,e]=adapt(net,p1,t1)
a=
0
e=
0
>> net.IW{1,1}
ans =
-2 -3
>> net.b{1}
ans =
1
>> [net,a,e]=adapt(net,p2,t2)
a=
1
e=
0
>> net.IW{1,1}
ans =
-2 -3
>> net.b{1}
ans =

1
Reeaua este convergent i produce ieirile dorite pentru toi cei patru vectori de
intrare.
S aplicm adapt un singur pas, folosind secvena format din toi cei patru vectori
de intrare. ncepem prin definirea reelei.
>> net = newp([-2 2;-2 +2],1);
>> net.trainParam.passes = 1;
Intrrile i intele corespunztoare din setul de antrenare sunt:
>> p = {[2;2] [1;-2] [-2;2] [-1;1]};
>> t = {0 1 0 1};
Antrenm reeaua cu:
>> [net,a,e]=adapt(net,p,t)
Ieirea i eroarea returnate sunt:
a=
[1] [1] [0] [0]
e=
[-1] [0] [0] [1]
Noile ponderi sunt:
>> net.IW{1,1}
ans =
-3 -1
>> net.b{1}
ans =
0
n final, simulm reeaua antrenat pentru fiecare intrare.
>> a1=sim(net,p)
a1 =

[0] [0] [1] [1]


>> [net,a,e]=adapt(net,p,t)
a=
[0] [0] [0] [1]
e=
[0] [1] [0] [0]
>> net.IW{1,1}
ans =
-2 -3
>> net.b{1}
ans =
1
Ieirile nu sunt egale cu intele, deci trebuie s antrenm reeaua cu mai mult de un
pas.
>> a2=sim(net,p)
a2 =
[0] [1] [0] [1]
>> [net,a,e]=adapt(net,p,t)
a=
[0] [1] [0] [1]
e=
[0] [0] [0] [0]
>> net.IW{1,1}
ans =
-2 -3
>> net.b{1}

ans =
1
>> a3=sim(net,p)
a3 =
[0] [1] [0] [1]
Reeaua este convergent i produce ieirile dorite pentru toi cei patru vectori de
intrare. Pentru a verifica, putem determina eroarea pentru fiecare intrare:
>> error = {a1{1}-t{1} a1{2}-t{2} a1{3}-t{3} a1{4}-t{4}}
error =
[0] [-1] [1] [0]
>> error = {a3{1}-t{1} a3{2}-t{2} a3{3}-t{3} a3{4}-t{4}}
error =
[0] [0] [0] [0]
Toate intrrile sunt clasificate corect.