Documente Academic
Documente Profesional
Documente Cultură
2020 14:59:40
SPECIALIZAREA INFORMATICĂ
DISCIPLINA: REŢELE NEURONALE
Rezolvare:
%Operatii cu matrici
clear all
close all
clc
disp('definirea unei constante: x=2')
x=2
pause
disp('definirea unui vector: y = [1 2 3 4 5]')
y = [1 2 3 4 5]
pause
disp('def. unei matr.:A=[1 2 3; 4 5 6;7 8 9],B = [10 7 6;3 2 0;2 4 5]')
A = [1 2 3; 4 5 6; 7 8 9]
B = [10 7 6;3 2 1;2 4 5]
pause
disp('referirea unui element al unei matrici: A(2,1)')
A(2,1)
pause
disp('adunarea a doua matrici: C = A + B')
C = A + B
pause
disp('scaderea a doua matrici: D = A - B')
D = A - B
pause
disp('inmultirea a doua matrici: E = A * B')
E = A * B
pause
disp('inmultirea elementelor corespondente: F = A .* B')
F = A .* B
pause
disp('ridicarea la puterea x: G = A ^ x')
G = A ^ x
pause
disp('ridicarea la putere a elem. corespondente: H = A .^x')
H = A .^ x
pause
disp('impartirea a doua matrici: I = A / B')
I = A / B
pause
disp('impartirea elem. Coresp. a doua matrici: J = A ./ B')
J = A ./B
pause
disp('transpusa unei matrici: K = A` ')
K = A'
pause
disp('schimbarea dimensiunii unei matrici: reshape(A,1,9)')
L = reshape(A,1,9)
1
FACULTATEA DE MATEMATICĂ–INFORMATICĂ 15.03.2020 14:59:40
SPECIALIZAREA INFORMATICĂ
DISCIPLINA: REŢELE NEURONALE
Rezolvare:
2
FACULTATEA DE MATEMATICĂ–INFORMATICĂ 15.03.2020 14:59:40
SPECIALIZAREA INFORMATICĂ
DISCIPLINA: REŢELE NEURONALE
Rezolvare:
%Instructiuni de control
clear all
close all
clc
disp('repetarea unei secvente de instructiuni de un nr. de ori: FOR')
disp(' ')
for i=1:1:4
disp('acest text va fi afisat de 4 ori')
end
pause
disp(' ')
disp('executarea conditionata a instructiunilor: IF, ELSEIF, ELSE')
disp(' ')
nr = input('introduceti un numar: ')
if nr > 10
disp('nr > 10')
elseif nr < 10
disp('nr < 10')
else
disp ('nr = 10')
end
pause
disp(' ')
disp('Repetarea unui grup de inst. de un nr. nedefinit de ori: WHILE')
disp(' ')
i=4
while i>0
i=i-1
end
3
FACULTATEA DE MATEMATICĂ–INFORMATICĂ 15.03.2020 14:59:40
SPECIALIZAREA INFORMATICĂ
DISCIPLINA: REŢELE NEURONALE
4. Scrieţi un program MATLAB care să ilustreze posibilităţile de creare a graficelor 2D şi 3D. În
acest sens reprezentaţi o distribuţie gaussiană 2D respectiv 3D.
Rezolvare:
%Grafice 2D si 3D
%clear all
%close all
%clc
sigma=3;
disp('grafic 2D')
x=-1:.005:1;
y=(1/2*pi*sigma^2)*exp(-(x.^2/2*sigma^2));
plot(x,y)
title('Gaussian 2D')
xlabel('Axa Ox')
ylabel('Axa Oy')
pause
disp('grafic 3D')
x=-1:.01:1;
y=-1:.01:1;
[X,Y] = meshgrid(x,y);
Z=(1/2*pi*sigma^2)*exp(-(X.^2+Y.^2)/2*sigma^2);
figure
mesh(Z)
title('Gaussian 3D')
xlabel('Axa Ox')
ylabel('Axa Oy')
zlabel('Axa Oz')
4
FACULTATEA DE MATEMATICĂ–INFORMATICĂ 15.03.2020 14:59:40
SPECIALIZAREA INFORMATICĂ
DISCIPLINA: REŢELE NEURONALE
Rezolvare:
%Reprezentare functii de activare
clear all
close all
clc
n = -4:0.001:4;
%functie de activare de tip sigmoid
a1 = logsig(n);
%functie de acticare de tip treapta
a2 = hardlim(n);
%functie de activare de tip liniar, cu saturatie
a3 = satlins(n);
%functie de activare radiala
a4 = radbas(n);
subplot(1,4,1)
plot(n,a1,'linewidth',2,'color','b');
axis([-4 4 -1.1 1.1])
title('sigmoid')
subplot(1,4,2)
plot(n,a2,'linewidth',2,'color','b');
axis([-4 4 -1.1 1.1])
title('treapta')
subplot(1,4,3)
plot(n,a3,'linewidth',2,'color','b')
axis([-4 4 -1.1 1.1])
title('liniar')
subplot(1,4,4)
plot(n,a4,'linewidth',2,'color','b');
axis([-4 4 -1.1 1.1])
title('radial')
5
FACULTATEA DE MATEMATICĂ–INFORMATICĂ 15.03.2020 14:59:40
SPECIALIZAREA INFORMATICĂ
DISCIPLINA: REŢELE NEURONALE
6. Un neuron “j” primeşte semnale de la alţi patru neuroni ale căror nivele de activare sunt: 0,1;
0,3; - 0,8; 0,5. Ponderile sinaptice ale neuronului “j” sunt: 0,9; 0,7; 0,1; 0,7. Calculaţi ieşirea
neuronului “j” în următoarele cazuri:
a) neuronul este liniar;
b) neuronul are o funcţie de activare sigmoidală.
Se consideră pragul de activare θk = 0,5.
Rezolvare:
%Implementare neuron
clear all
close all
clc
% definire prag de activare
theta = 0.5
% x = vector de intrare
x = [0.1 0.3 -0.8 0.5]
% w = vectorul ponderilor sinaptice
w = [0.9 0.7 0.1 0.7]
% y = iesirea neuronului
y1 = purelin(x*w'-theta)
y2 = logsig(x*w'-theta)
6
FACULTATEA DE MATEMATICĂ–INFORMATICĂ 15.03.2020 14:59:40
SPECIALIZAREA INFORMATICĂ
DISCIPLINA: REŢELE NEURONALE
7. Perceptronul simplu poate fi folosit la implementarea unor funcţii logice. Verificaţi practic
această afirmaţie prin intermediul codului sursă MATLAB aferent unui perceptron simplu care
să efectueze funcţiile logice ŞI, SAU şi SAU EXCLUSIV. Justificaţi comportamentul
perceptronului simplu în cazul funcţiei SAU EXCLUSIV.
Indicaţie: La implementarea RNA se va folosi funcţia newp, a cărei descriere este oferită în
continuare:
NEWP - creează un perceptron
Sintaxa: net = newp(pr,s,tf,lf)
în care:
PR – Rx2, matrice de valori min şi max pentru R intrări.
S – Număr de neuroni
TF – Funcţie de transfer, implicit funcţia prag ('hardlim').
LF – Funcţia de învăţare, implicit 'learnp'.
Rezolvare:
%Implementare unei retele neuronale de tip perceptron simplu
clear all
close all
clc
% tipar de intrare
Pantr = [0 0 1 1;0 1 0 1]
% tipare de iesire
T_SAU = [0 1 1 1]
T_SI = [0 0 0 1]
T_XOR = [0 1 1 0]
% se implementeaza 3 RNA perceptron
net1 = newp([0 1;0 1],1);
net2 = newp([0 1;0 1],1);
net3 = newp([0 1;0 1],1);
% se antreneaza 3 RNA perceptron in rezolvarea
% problemelor SAU, SI, SAU-EXCLUSIV
% implicit numarul de epoci = 100
% iar pentru a modifica nr. epoci se utilizeaza
%net1.trainParam.epochs = 20;
net1 = train(net1,Pantr,T_SAU);
net2 = train(net2,Pantr,T_SI);
net3 = train(net3,Pantr,T_XOR);
% se testeaza performantele retelelor pentru vectorii de antrenament
y1a = sim(net1,Pantr)
y2a = sim(net2,Pantr)
y3a = sim(net3,Pantr)
% se testeaza performantele retelelor pentru vectorii de test
% astfel se poate testa capacitatea de generalizare a retelelor
Ptest = [0.1 0.2 0.9 0.8;0.2 0.7 0.1 0.9];
y1t = sim(net1,Ptest)
y2t = sim(net2,Ptest)
y3t = sim(net3,Ptest)
Observaţie: Pentru reţelele neuronale care implementează funcţiile ŞI şi SAU logic se constată o
funcţionare corespunzătoare atât pentru tiparele de antrenament cât şi pentru cele de test. Pentru
cazul SAU-EXCLUSIV se constată imposibilitatea rezolvării corecte a problemei, atât pentru
datele de atrenament cât şi pentru cele de test. Explicaţia provine din faptul că primele două
cazuri (ŞI, SAU) reprezintă probleme liniar separabile, pe când problema SAU-EXCLUSIV nu
este liniar separabilă.
7
FACULTATEA DE MATEMATICĂ–INFORMATICĂ 15.03.2020 14:59:40
SPECIALIZAREA INFORMATICĂ
DISCIPLINA: REŢELE NEURONALE
Indicaţie: La implementarea RNA se va folosi funcţia newlin, a cărei descriere este oferită în
continuare:
Rezolvare:
%Predictie liniara
clear all
close all
clc
% generarea si reprezentarea functiei tinta
x = 0:0.1:6*pi;
fr = linspace(1,3,length(x));
y = sin(x.*fr);
plot(x,y);
hold on
% vectori de intrare si iesire P respectiv T
P = con2seq(y);
T = P;
% implementarea retelei neuronale
lr = 0.1;
intarzieri = [1 2 3 4 5];
net = newlin(minmax(y),1,intarzieri,lr);
% calculul esantionului curent din cele 5 esantioane intarziate
[net,ies,e]=adapt(net,P,T);
% reprezentarea grafica a rezultatelor
plot(x,cat(2,ies{:}),':r');
xlabel('Timp');
ylabel('Predictie (rosu) - Tinta – Eroare (verde) .-');
title('Semnalele Predictie, Tinta si Eroare');
plot(x,cat(2,e{:}),'.-g')
hold off