practica perceptron

13
Universidad Católica de Santa Maria Programa Profesional de Ingeniería Mecánica Eléctrica - Mecatrónica INFORME PRÁCTICA N° 10 EL PERCEPTRON BASICO 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 ingeniería desde esta perspectiva. Comprender sólidamente el funcionamiento de las redes que utilizan el perceptrón. Ser capaz de programar con éxito simulaciones de estas redes II. MATERIALES Y EQUIPOS Computador. Sistema Operativo Windows XP MatLab. III. PROCEDIMIENTO %ejemplo pre1: compuerta or(un problema de clasificacion sencillo) help perl clf reset pausa = 2; %definicion del problema P = [0 1 0 1; 0 0 1 1]; T = [0 0 0 1] %grafica de los vectores a entrenar disp('presione cualquier tecla para ver los vectors de entrada') pause, disp('') V = [-2 2 -2 2]; PR = [-2 2; -2 2]; plotpv(P,T,V); figura=gcf; axis('equal') title('grafica de los vectores de entrada') xlabel('Entrada 1') ylabel('Entrada 2') pause % iniciado la arquitectura del la red [R,Q] = size(P); [S,Q] = size (T); red=newp(PR,S);

Upload: kevin-chacon-galdos

Post on 13-Sep-2015

253 views

Category:

Documents


4 download

DESCRIPTION

perceptron basico

TRANSCRIPT

INFORME PRCTICA N 10

EL PERCEPTRON BASICO

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 EQUIPOSComputador.Sistema Operativo Windows XP MatLab.

III. PROCEDIMIENTO

%ejemplo pre1: compuerta or(un problema de clasificacion sencillo)help perlclf resetpausa = 2;%definicion del problemaP = [0 1 0 1; 0 0 1 1];T = [0 0 0 1]%grafica de los vectores a entrenar disp('presione cualquier tecla para ver los vectors de entrada')pause, disp('')V = [-2 2 -2 2];PR = [-2 2; -2 2];plotpv(P,T,V);figura=gcf;axis('equal')title('grafica de los vectores de entrada')xlabel('Entrada 1')ylabel('Entrada 2')pause % iniciado la arquitectura del la red[R,Q] = size(P); [S,Q] = size (T);red=newp(PR,S);z = menu('inicializar pesos y umbra A''condiciones inciales en la guia del estudiante''valores aleatorios');disp('')if z == 1 red.IW{1,1} = [0.5 1.5]; red.n{1} = [1.5];else red.inputweights{1,1}.initFcn = 'rands'; red.biases{1}.initFcn = 'rands'; red=init(red);end

%gradica de la clasificacion incialhold onlinea=plotpc(red.IW{1,1},red.b{1});%entrenamiento de la red%entrenamiento de los parametrosdisp_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 rpesentacionA = sim(red,P);e = T-A;for epoch=1:max_epoch %dase de revision if all(e==0), epoch=epoch-1; break, end %fase de aprendizaje 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]; %fase de presentacion A = sim(red,P); e = T-A, % presentacion en progeso if rem(epoch,disp_freq) == 0 pause(pause), disp('') linea=plotpc(W,B,linea); drawnow end pesos1 = [pesos1 W(1,1)]; pesos2 = [pesos2 W(1,2)]; umbrales = [umbrales B];end% grafica de la clasificacion finalfigura(figura)plotpc(W,B,linea); drawnowpauseclf reset% gradica de los pesso y umbrales vs epochplot(0:epoch,pesos1,'-',0:epoch,pesos2,'--',0:epoch,umbrales,'-.');axis squaretitle('parametros vs. iteraciones');xlabel('iteraciones');ylabel('W1____W2____-B -.-.-.');pause% resumen de los rsultadosfprintf('/nvalores finales de la red:/n')WBfprintf('entrenada en %. 0f iteraciones./',epoch);fprintf('red clasificada:');if all(sim(red,P) == T) disp('correctamente.')else disp('incorrectamente.')end

Universidad Catlica de Santa MariaPrograma Profesional de Ingeniera Mecnica Elctrica - MecatrnicaProcesos Inteligentes

W = 1.3110 1.3424 B = -0.2155

COMO AND TENEMOS:

W = 1.0637 1.5538 B = -1.5879

%ejemplo pre2: multihelp perlclf resetpausa = 2;%definicion del problemaP = [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.3];T = [1 1 1 0 0 1 1 1 0 0; 0 0 0 0 0 1 1 1 1 1];%grafica de los vectores a entrenar disp('presione cualquier tecla para ver los vectors de entrada')pause, disp('')V = [-2 2 -2 2];PR = [-2 2; -2 2];plotpv(P,T,V);figura=gcf;axis('equal')title('grafica de los vectores de entrada')xlabel('Entrada 1')ylabel('Entrada 2')pause% iniciado la arquitectura del la red[R,Q] = size(P); [S,Q] = size (T);red=newp(PR,S);z = menu('inicializar pesos y umbra A''condiciones inciales en la guia del estudiante''valores aleatorios');disp('')if z == 1 red.IW{1,1} = [-0.6926 0.6048;0.1433 -0.9339]; red.n{1} = [0.0689;-0.0030];else red.inputweights{1,1}.initFcn = 'rands'; red.biases{1}.initFcn = 'rands'; red=init(red);end%gradica de la clasificacion incialhold onlinea=plotpc(red.IW{1,1},red.b{1});%entrenamiento de la red%entrenamiento de los parametrosdisp_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 rpesentacionA = sim(red,P);e = T-A;for epoch=1:max_epoch %dase de revision if all(e==0), epoch=epoch-1; break, end %fase de aprendizaje 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]; %fase de presentacion A = sim(red,P); e = T-A, % presentacion en progeso if rem(epoch,disp_freq) == 0 pause(pause), disp('') linea=plotpc(W,B,linea); drawnow end pesos1 = [pesos1 W(1,1)]; pesos2 = [pesos2 W(1,2)]; umbrales = [umbrales B];end% grafica de la clasificacion final figura(figura)plotpc(W,B,linea); drawnowpauseclf reset % gradica de los pesso y umbrales vs epoch plot(0:epoch,pesos1,'-',0:epoch,pesos2,'--',0:epoch,umbrales,'-.');axis squaretitle('parametros vs. iteraciones');xlabel('iteraciones');ylabel('W1____W2____-B -.-.-.');pause% resumen de los rsultadosfprintf('/nvalores finales de la red:/n')WBfprintf('entrenada en %. 0f iteraciones./',epoch);fprintf('red clasificada:');if all(sim(red,P) == T) disp('correctamente.')else disp('incorrectamente.')end

W = -4.9460 6.3647 -2.0732 -1.5049

B = -0.3706 1.8116

entrada en red clasificada: correctamente.

6. Cree un archivo-m para lograr una compuerta OR de 5 entradas

%ejemplo pre1: compuerta or(un problema de clasificacion sencillo)help perlclf resetpausa = 2;

%definicion del problemaP = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1; 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1; 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1; 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1; 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 ];T = [0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]

% iniciado la arquitectura del la red[R,Q] = size(P); [S,Q] = size (T);red=newp(PR,S);z = menu('inicializar pesos y umbra A''condiciones inciales en la guia del estudiante''valores aleatorios');disp('')if z == 1 red.IW{1,1} = [0.5 1.5 0.33 2 1.4]; red.n{1} = [0.5];else red.inputweights{1,1}.initFcn = 'rands'; red.biases{1}.initFcn = 'rands'; red=init(red);end%entrenamiento de la red%entrenamiento de los parametrosdisp_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 rpesentacion%A = sim(red,P);%e = T-A;for epoch=1:max_epoch %dase de revision if all(e==0), epoch=epoch-1; break, end %fase de aprendizaje 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]; %fase de presentacion %A = sim(red,P); %e = T-A, % presentacion en progeso if rem(epoch,disp_freq) == 0 pause(pause), disp('') linea=plotpc(W,B,linea); drawnow end pesos1 = [pesos1 W(1,1)]; pesos2 = [pesos2 W(1,2)]; umbrales = [umbrales B];end

% resumen de los rsultadosfprintf('/nvalores finales de la red:/n')WBfprintf('entrenada en %. 0f iteraciones./',epoch);fprintf('red clasificada:');if all(sim(red,P) == T) disp('correctamente.')else disp('incorrectamente.')end

W = -0.0292 0.6006 B = 0.9143

%ejemplo pre3: alejado de la convergenciahelp perlclf resetpausa = 2;%definicion del problemaP = [0 1 0 1; 0 0 1 1];T = [1 0 0 1]%grafica de los vectores a entrenar disp('presione cualquier tecla para ver los vectors de entrada')pause, disp('')V = [-2 2 -2 2];PR = [-2 2; -2 2];plotpv(P,T,V);figura=gcf;axis('equal')title('grafica de los vectores de entrada')xlabel('Entrada 1')ylabel('Entrada 2')pause % iniciado la arquitectura del la red[R,Q] = size(P); [S,Q] = size (T);red=newp(PR,S);z = menu('inicializar pesos y umbra A''condiciones inciales en la guia del estudiante''valores aleatorios');disp('')if z == 1 red.IW{1,1} = [0.5 1.5]; red.n{1} = [1.5];else red.inputweights{1,1}.initFcn = 'rands'; red.biases{1}.initFcn = 'rands'; red=init(red);end%gradica de la clasificacion incialhold onlinea=plotpc(red.IW{1,1},red.b{1});%entrenamiento de la red%entrenamiento de los parametrosdisp_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 rpesentacionA = sim(red,P);e = T-A;for epoch=1:max_epoch %dase de revision if all(e==0), epoch=epoch-1; break, end %fase de aprendizaje 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];

%fase de presentacion A = sim(red,P); e = T-A, % presentacion en progeso if rem(epoch,disp_freq) == 0 pause(pause), disp('') linea=plotpc(W,B,linea); drawnow end pesos1 = [pesos1 W(1,1)]; pesos2 = [pesos2 W(1,2)]; umbrales = [umbrales B];end% grafica de la clasificacion final figura(figura)plotpc(W,B,linea); drawnowpauseclf reset % gradica de los pesso y umbrales vs epoch plot(0:epoch,pesos1,'-',0:epoch,pesos2,'--',0:epoch,umbrales,'-.');axis squaretitle('parametros vs. iteraciones');xlabel('iteraciones');ylabel('W1____W2____-B -.-.-.');pause% resumen de los rsultadosfprintf('/nvalores finales de la red:/n')WBfprintf('entrenada en %. 0f iteraciones./',epoch);fprintf('red clasificada:');if all(sim(red,P) == T) disp('correctamente.')else disp('incorrectamente.')end

W = 0.9190 0.3115B = 0.5844

entreda en red clasificada: incorrectamente.