Está en la página 1de 7

PERCEPTRON

clear all;
clc;
M=[1 1 1 1 1 1; 0 0 0 0 1 0; 0 0 0 0 1 0; 1 1 1 1 1 1;0 0 0 0 1 0;0 0 0 0 1 0;1 1 1 1 1 1 ];
umbral=0.6;
var=1;
LR=0.15;
interacion=0;
suma=0;
P(1)= 0.1;
P(2)= 0.2;
P(3)= 0.15;
P(4)= 0.18;
P(5)= 0.3;
while var==1
for i=1:7
I(i)=M(i,1).*P(1)+M(i,2).*P(2)+M(i,3).*P(3)+M(i,4).*P(4)+M(i,5).*P(5);
if I(i)>= umbral
Sa(i)=1;
end
if I(i)< umbral
Sa(i)=0;
end
P(1)=P(1)+LR*(M(i,6)-Sa(i))*M(i,1);
P(2)=P(2)+LR*(M(i,6)-Sa(i))*M(i,2);
P(3)=P(3)+LR*(M(i,6)-Sa(i))*M(i,3);
P(4)=P(4)+LR*(M(i,6)-Sa(i))*M(i,4);
P(5)=P(5)+LR*(M(i,6)-Sa(i))*M(i,5);
error(i) = abs((M(i,6)-Sa(i)));

end
Sa
for i=1:7
suma=suma+error(i);
end
suma
if suma==0
disp('El percetron ya aprendio:')
var=2;
end
if suma~=0
disp('El percetron todavia no aprende ')
var=1;
end
suma=0;
interacion=interacion+1;

end
disp(['El percetron ya aprendio en: ',num2str(interacion),' interaciones']);
fprintf('La neurona aprendio en: %d', interacion ,' interaciones');

PERCEPTRON CONSULTA

clear all; clc;


M=[1 1 1 1 1 ; 0 0 0 0 1 ; 0 0 0 0 1 ; 1 1 1 1 1 ; 0 0 0 0 1 ; 0 0 0 0 1 ; 1 1 1 1 1 ]%salida
separada
N=[1; 0; 0; 1; 0; 0; 1]
umbral=0.1;
var=1;
LR=0.006;
iteracion=0;
suma=0;
P(1)=0.01;
P(2)=0.04;
P(3)=0.03;
P(4)=0.02;
P(5)=0.05;

while var==1
for i=1:7

I(i)=M(i,1)*P(1)+M(i,2)*P(2)+M(i,3)*P(3)+M(i,4)*P(4)+M(i,5)*P(5)
if I(i)>=umbral
Sa(i)=1;
end
if I(i)<umbral
Sa(i)=0;
end
P(1)=P(1)+LR*(N(i)-Sa(i))*M(i,1);
P(2)=P(2)+LR*(N(i)-Sa(i))*M(i,2); %numero total contando con la salida M(i,6)
P(3)=P(3)+LR*(N(i)-Sa(i))*M(i,3);
P(4)=P(4)+LR*(N(i)-Sa(i))*M(i,4);
P(5)=P(5)+LR*(N(i)-Sa(i))*M(i,5);

error(i)=abs(N(i)-Sa(i));
end

Sa
for i=1:7 %numero de puntos de la matriz
suma=suma+error(i);
end
suma
if suma==0
disp('El PERCEPTRON YA APRENDIO!')
var=2;
end
if suma~=0
disp('El PERCEPTRON TODAVIA NO APRENDE')
var=1;
end
suma=0
iteracion=iteracion+1

end

disp(['El PERCEPTRON APRENDIO EN:', num2str(iteracion),' iteraciones'])


fprintf('LA NEURONA APRENDIO EN: %d',iteracion,' iteraciones')

%consulta
fprintf(['\nINGRESE LA MATRIZ PARA CONSULTAR\n'])
for i=1:7
for j=1:5
MATRIZ(i,j)=input(['ELEMENTO (',num2str(i),',' num2str(j),'): '])
end
end
if M==MATRIZ
fprintf(['\n LA RESPUESTA ES: ' num2str(Sa)])
else
disp('Este parametro la neurona no aprende todavia')
end

ADALINE

clear all;
clc;
M=[1 1 1 1;0 1 1 1;0 0 1 1; 0 0 0 1; 0 0 0 0];
%P=[0.01 0.5 0.2 0.25];
VecSal=[4 3 2 1 0];
LR=0.05;
var=1;
interacion=0;
suma=0;
bias=1;
P=abs(0.5-rand(4));
while var==1
for i=1:5
I1(i)=(P(1)*M(i,1)+P(2)*M(i,2)+P(3)*M(i,3)+P(4)*M(i,4))+bias;
I(i)=round(I1(i));
P(1)=P(1)+(LR*(VecSal(i)-I(i)))*M(i,1);
P(2)=P(2)+(LR*(VecSal(i)-I(i)))*M(i,2);
P(3)=P(3)+(LR*(VecSal(i)-I(i)))*M(i,3);
P(4)=P(4)+(LR*(VecSal(i)-I(i)))*M(i,4);
bias=bias+2*LR*(VecSal(i)-I(i));
Error(i)=abs(VecSal(i)-I(i));
end
for j=1:5
suma=suma+Error(j);
end
if suma==0
disp('la neurona SI aprendio')
var=3;
end
if suma~=0
disp('la neurona NO aprendio')
var=1;
end
suma=0;
interacion=interacion+1;
end
suma
disp(['El Adaline aprendio en: ', num2str(interacion),'INTERACIONES'])
I

BACKPROPAGATION

clear all;
clc;
M1=[1 1 1 1 1 1;0 1 1 1 1 0;0 0 1 1 0 1; 0 0 0 1 0 0; 0 0 0 0 0 0];
M2=[1 1 1 1 1 1;1 1 1 0 1 0;1 1 0 0 0 1; 1 0 0 0 0 0; 0 0 0 0 0 0];
umbral=0.5;
LR=0.05;
var=1;
interacion=0;
suma=0;
momento=0.15;
bias1=0.4;
bias2=0.4;
P=abs(0.5-rand(4));

variable=input('\nSI DESEA SALIR ESCRIBA "SI", SI DESEA CONTINUAR ESCRIBA


"NO"\n','s');

while variable == 'NO'


a=input('\n ESCRIBA 1 para la primera matriz\n Escriba 2 para la segunda matriz\n Ingreso
ENTER\n');
if a==1
M=M1;
end
if a==2
M=M2;
end

while var==1
for i=1:5
H1(i)=(P(1)*M(i,1)+P(3)*M(i,2)+P(5)*M(i,3)+P(7)*M(i,4))+bias1;
H2(i)=(P(2)*M(i,1)+P(4)*M(i,2)+P(6)*M(i,3)+P(8)*M(i,4))+bias2;
H11=1/(1+exp(-H1(i)));
H12=1/(1+exp(-H2(i)));
if H11>=umbral
a1(i)=1;
else
a1(i)=0;
end
if H12>=umbral
a2(i)=1;
else
a2(i)=0;
end
P(1)=P(1)+((LR*(M(i,5)-a1(i))*M(i,1))*momento);
P(2)=P(2)+((LR*(M(i,6)-a2(i))*M(i,1))*momento);
P(3)=P(3)+((LR*(M(i,5)-a1(i))*M(i,2))*momento);
P(4)=P(4)+((LR*(M(i,6)-a2(i))*M(i,2))*momento);
P(5)=P(5)+((LR*(M(i,5)-a1(i))*M(i,3))*momento);
P(6)=P(6)+((LR*(M(i,6)-a2(i))*M(i,3))*momento);
P(7)=P(7)+((LR*(M(i,5)-a1(i))*M(i,4))*momento);
P(8)=P(8)+((LR*(M(i,6)-a2(i))*M(i,4))*momento);

I1(i)=(a1(i)*P(9)+a1(i)*P(11))+bias1;
I2(i)=(a2(i)*P(10)+a2(i)*P(12))+bias2;
I11=1/(1+exp(-I1(i)));
I12=1/(1+exp(-I2(i)));
if I11>=umbral
Y1(i)=1;
else
Y1(i)=0;
end
if I12>=umbral
Y2(i)=1;
else
Y2(i)=0;
end

P(9)=P(9)+((LR*(M(i,5)-Y1(i))*a1(i))*momento);
P(10)=P(10)+((LR*(M(i,5)-Y2(i))*a1(i))*momento);
P(11)=P(11)+((LR*(M(i,5)-Y1(i))*a2(i))*momento);
P(12)=P(12)+((LR*(M(i,5)-Y2(i))*a2(i))*momento);

bias1=bias1+2*LR*(M(i,5)-Y1(i));
bias2=bias2+2*LR*(M(i,5)-Y2(i));
Error1(i)=abs(M(i,5)-Y1(i));
Error2(i)=abs(M(i,6)-Y2(i));
suma=suma+Error1(i)+Error2(i);
end
Y1
Y2
if suma==0
disp('la neurona YA aprendio')
var=4;
end
if suma~=0
disp('la neurona NO aprendio')
var=1;
end
suma=0;
interacion=interacion+1;
end
disp(['El backpropagation aprendio en: ', num2str(interacion),'INTERACIONES'])
disp('interaciones')
variable=input('\nSI DESEA SALIR ESCRIBA''SI'', SI DESEA CONTINUAR ESCRIBA''NO''\n')
suma
end

También podría gustarte