Вы находитесь на странице: 1из 14

UNIVERSIDAD CATLICA DE SANTA MARA

FACULTAD DE INGENIERAS FSICAS Y FORMALES



PROGRAMA PROFESIONAL DE INGENIERA MECNICA, MECNICA
ELCTRICA Y MECATRNICA


PROCESOS INTELIGENTES



EL PERCEPTRON BASICO


ALUMNO:

VARGAS CRUZ JULIUS ANDREOTI












2014




I. OBJETIVO GENERAL

Utilizar Matlab para modelar una neurona artificial y la arquitectura de una red neuronal
artificial.

Manejar Matlab y la caja de herramientas de redes neuronales artificiales para resolver un
problema de ingeniera desde esta perspectiva.

Comprender slidamente el funcionamiento de las redes que utilizan el perceptrn.

Ser capaz de programar con xito simulaciones de estas redes


II. MATERIALES Y EQUIPOS

Computador.
Sistema Operativo Windows XP
MatLab.

III. PROCEDIMIENTO

Cree un archivo m con el nombre per1.m que simule una compuerta or de dos entradas
usando el perceptron.
Los pesos iniciales de las entradas 1 y 2 son 0.5 y 1.5 respectivamente, el peso de la entrada del
umbral es 1.5

%PROGRAMA 1
clc
clear all
clf reset
pausa=2;
P=[0 1 0 1;
0 0 1 1];
T=[0 1 1 1];
disp('presione')
pause, disp('')
V=[-2 2 -2 2];
PR=[-2 2;-2 2];
plotpv(P,T,V);
figura=gcf;
axis('equal')
title('Grafica de los vec de entrada')
xlabel('Entrada1')
ylabel('Entrada2')
pause

%%INICIALIZACION DE LA ARQUITECTURA DE LA RED
[R,Q]=size(P); [S,Q]=size(T);
red=newp(PR,S);
z=menu('Inicializar pesos y umbral A','condiciones iniciales en
la guia del estudiante','valores aleatorios');
disp('')
if z == 1
red.IW{1,1}=[0.5 1.5]; red.b{1}=[1.5];
else
red.inputweights{1,1}.initFcn='rands';
red.biases{1}.initFcn='rands';
red=init(red);
end


%%GRAFICA DE LA CLASIFICACION INICIAL
hold on
linea=plotpc(red.IW{1,1},red.b{1});
%ENTRENAMIENTO DE LA RED
%ENTRENAMIENTO DE LOS PARAMETROS
disp_freq=1;
max_epoch=20;
W=red.IW{1,1};
B=red.b{1};
pesos1=[W(1,1)];
pesos2=[W(1,2)];
umbrales=[B];
% FASE DE PRESENTACION
A=sim(red,P);
e=T-A;
for epoch=1:max_epoch
if all(e==0), epoch=epoch-1; break, end
dW=learnp(W,P,[],[],[],[],e,[],[],[],[],[]);
dB=learnp(B,ones(1,Q),[],[],[],[],e,[],[],[],[],[]);
W=W+dW; B=B+dB;
red.IW{1,1}=W;
red.b{1}=[B];
A=sim(red,P);
e=T-A;
if rem(epoch,disp_freq)==0
pause(pausa), disp('')
linea=plotpc(W,B,linea); drawnow
end
pesos1=[pesos1 W(1,1)];
pesos2=[pesos2 W(1,2)];
umbrales=[umbrales B];
end

figure(figura)
plotpc(W,B,linea); drawnow
pause
clf reset

plot(0:epoch,pesos1,'-',0:epoch,pesos2,'--',0:epoch,umbrales,'-
.');
axis square
title('parametros vs iteraciones');
xlabel('iteraciones');
ylabel('W1__W2_ _ _B -.-.-.');
pause

fprintf('\nValores finales de la red:\n')
W
B
fprintf('Entrenada en %.of iteraciones. \n',epoch)
fprintf('Red clasificada');
if all(sim(red,P)==T)
disp('Correctamente')
else
disp('Incorrectamente')
end








2. Cules son los valores finales del peso y el umbral?

3. Cambie el comportamiento de la red para que se comporte
como una AND de dos entradas

clc
clear all
clf reset
pausa=2;
P=[0 1 0 1;
RESULTADOS
Valores finales de la red:

W =

0.3152 0.9412


B =

-0.0702

Entrenada en 3f iteraciones.
Red clasificada Correctamente
0 0 1 1];
T=[0 0 0 1];
disp('presione')
pause, disp('')
V=[-2 2 -2 2];
PR=[-2 2;-2 2];
plotpv(P,T,V);
figura=gcf;
axis('equal')
title('Grafica de los vec de entrada')
xlabel('Entrada1')
ylabel('Entrada2')
pause

%%INICIALIZACION DE LA ARQUITECTURA DE LA RED
[R,Q]=size(P); [S,Q]=size(T);
red=newp(PR,S);
z=menu('Inicializar pesos y umbral A','condiciones iniciales en la
guia del estudiante','valores aleatorios');
disp('')
if z == 1
red.IW{1,1}=[0.5 1.5]; red.b{1}=[1.5];
else
red.inputweights{1,1}.initFcn='rands';
red.biases{1}.initFcn='rands';
red=init(red);
end


%%GRAFICA DE LA CLASIFICACION INICIAL
hold on
linea=plotpc(red.IW{1,1},red.b{1});
%ENTRENAMIENTO DE LA RED
%ENTRENAMIENTO DE LOS PARAMETROS
disp_freq=1;
max_epoch=20;
W=red.IW{1,1};
B=red.b{1};
pesos1=[W(1,1)];
pesos2=[W(1,2)];
umbrales=[B];
% FASE DE PRESENTACION
A=sim(red,P);
e=T-A;
for epoch=1:max_epoch
if all(e==0), epoch=epoch-1; break, end
dW=learnp(W,P,[],[],[],[],e,[],[],[],[],[]);
dB=learnp(B,ones(1,Q),[],[],[],[],e,[],[],[],[],[]);
W=W+dW; B=B+dB;
red.IW{1,1}=W;
red.b{1}=[B];
A=sim(red,P);
e=T-A;
if rem(epoch,disp_freq)==0
pause(pausa), disp('')
linea=plotpc(W,B,linea); drawnow
end
pesos1=[pesos1 W(1,1)];
pesos2=[pesos2 W(1,2)];
umbrales=[umbrales B];
end

figure(figura)
plotpc(W,B,linea); drawnow
pause
clf reset

plot(0:epoch,pesos1,'-',0:epoch,pesos2,'--',0:epoch,umbrales,'-.');
axis square
title('parametros vs iteraciones');
xlabel('iteraciones');
ylabel('W1__W2_ _ _B -.-.-.');
pause

fprintf('\nValores finales de la red:\n')
W
B
fprintf('Entrenada en %.of iteraciones. \n',epoch)
fprintf('Red clasificada');
if all(sim(red,P)==T)
disp('Correctamente')
else
disp('Incorrectamente')
end











3.Cuales son los valores finales de peso y umbral
Creen un archivo m con el nombre per2 que clasifique 10 puntos de
entrada dentro de cuatro regiones usando una capa de dos entradas con
dos neuronas
W0=-0.6926 0.6048; 0.1433 -0.9339
B0= 0.0689; -0.0030

clc
clear all
clf reset
pausa=2;
P=[0.1 0.7 0.8 0.8 1 0.3 0 -0.3 -0.5 -1.5;
1.2 1.8 1.6 0.6 0.8 0.5 0.2 0.8 -1.5 -1.5];
T=[1 1 1 0 0 1 1 1 0 0;
0 0 0 0 0 1 1 1 1 1]
disp('presione')
pause, disp('')
V=[-2 2 -2 2];
PR=[-2 2;-2 2];
plotpv(P,T,V);
figura=gcf;
axis('equal')
title('Grafica de los vec de entrada')
xlabel('Entrada1')
ylabel('Entrada2')
pause

[R,Q]=size(P); [S,Q]=size(T);
red=newp(PR,S);
z=menu('Inicializar pesos y umbral A','condiciones iniciales en la
guia del estudiante','valores aleatorios');
disp('')

if z == 1
red.IW{1,1}=[-0.629 0.6048;
0.1433 -0.9339];
red.b{1}=[0.0689;
-0.0030];
RESULTADOS AND
Valores finales de la red:

W =

1.9708 1.6006


B =

-2.0857

Entrenada en 11f iteraciones.
Red clasificadaCorrectamente
else
red.inputweights{1,1}.initFcn='rands';
red.biases{1}.initFcn='rands';
red=init(red);
end

hold on
linea=plotpc(red.IW{1,1},red.b{1});
%ENTRENAMIENTO DE LA RED
%ENTRENAMIENTO DE LOS PARAMETROS
disp_freq=1;
max_epoch=20;
W=red.IW{1,1};
B=red.b{1};
pesos1=[W(1,1)];
pesos2=[W(1,2)];
umbrales=[B];
% FASE DE PRESENTACION
A=sim(red,P);
e=T-A;

for epoch=1:max_epoch
if all(e==0), epoch=epoch-1; break, end
dW=learnp(W,P,[],[],[],[],e,[],[],[],[],[]);
dB=learnp(B,ones(1,Q),[],[],[],[],e,[],[],[],[],[]);
W=W+dW; B=B+dB;
red.IW{1,1}=W;
red.b{1}=[B];
A=sim(red,P);
e=T-A;
if rem(epoch,disp_freq)==0
pause(pausa), disp('')
linea=plotpc(W,B,linea); drawnow
end

pesos1=[pesos1 W(1,1)];
pesos2=[pesos2 W(1,2)];
umbrales=[umbrales B];
end

figure(figura)
plotpc(W,B,linea); drawnow
pause
clf reset

plot(0:epoch,pesos1,'-',0:epoch,pesos2,'--',0:epoch,umbrales,'-.');
axis square
title('parametros vs iteraciones');
xlabel('iteraciones');
ylabel('W1__W2_ _ _B -.-.-.');
pause

fprintf('\nValores finales de la red:\n')
W
B
fprintf('Entrenada en %.of iteraciones. \n',epoch)
fprintf('Red clasificada');
if all(sim(red,P)==T)
disp('Correctamente')
else
disp('Incorrectamente')
end



















RESULTADOS
Valores finales de la red:

W =

-3.2685 4.4190
-4.8156 -4.3885


B =

-0.7162
4.8435

Entrenada en 5f iteraciones.
Red clasificadaCorrectamente
OR de 5 ENTRADAS

PESOS Y BIAS FINALES

W =

1 1 1 1 1


B =

-1











CONCLUSIONES Y RECOMENDACIONES

1. El nmero de iteraciones, el Bias y los pesos luego de cada entrenamiento no son los mismos

2. Una sola capa puede realizar perfectamente aproximaciones a funciones lineales o asociacin de
patrones


3. Hay Compuertas que no pueden clasificarse con solo una capa

Вам также может понравиться