You are on page 1of 17

Materia: Introduccin al Reconocimiento de Patrones Profesora: Alba Maribel Snchez Glvez Alumno: Alejandro Hernndez Catrip REPORTE DE ACTIVIDADES

Prctica 1 Objetivo: Disear, entrenar y simular una RNA que reconozca los puntos de grupos linealmente separables en MATLAB. Usando los puntos de la funcin AND Graficar en el plano los puntos X1, X2, X3, X4 de R2 con el cual se entrenar la RNA en este caso

Plano con los puntos (0,0), (0,1), (1,0), (1,1) para entrenar la RNA (funcin AND) La clase cero tiene 3 elementos {(0,0), (0,1), (1,0)} y la clase uno tiene 1 elemento {(1,1)}, disear, entrenar y simular la RNA. DISEO DE LA RNA % Se establece la RNA con los valores mximo y mnimo para los puntos >> pr1_ej1 = newp([0,1;0,1],[0,1]); % Se emplearn 10 pocas para el entrenamiento >> pr1_ej1.trainParam.epochs = 10; >> P=[0 0 1 1; 0 1 0 1] P= 0 0 0 1 1 0 1 1

>> T=[0 0 0 1] T= 0 0 0 1

Materia: Introduccin al Reconocimiento de Patrones Profesora: Alba Maribel Snchez Glvez Alumno: Alejandro Hernndez Catrip REPORTE DE ACTIVIDADES
ENTRENAMIENTO DE LA RNA >> pr1_ej1 = train(pr1_ej1,P,T);

Entrenamiento de la Red SIMULAR LA RNA >> valores = sim(pr1_ej1,P) valores = 0 0 0 1

En este caso, se simula la RNA empleando los valores para los pesos y el bias de forma aleatoria (es decir, valores asignados de manera aleatoria por MATLAB). >> pesos = pr1_ej1.iw{1,1} pesos = 2 1

>> bias = pr1_ej1.b{1} bias = -3

Materia: Introduccin al Reconocimiento de Patrones Profesora: Alba Maribel Snchez Glvez Alumno: Alejandro Hernndez Catrip REPORTE DE ACTIVIDADES
El punto (-1,5) en cul clase est ubicado? De acuerdo con la RNA entrenada, el punto (-1,5) es clasificado en la clase 1: % Se simula la red pr1_ej1 (RNA para la funcin AND) clasificando el punto (-1,5) >> valores = sim(pr1_ej1,[-1;5]) valores = 1 El punto (4,-10) en cul clase est ubicado? De acuerdo con la RNA entrenada, el punto (4,-10) es clasificado en la clase 0: % Se simula la red pr1_ej1 (RNA para la funcin AND) clasificando el punto (4,-10) >> valores = sim(pr1_ej1,[4;-10]) valores = 0 Realizar lo mismo con los puntos de la funcin OR Graficar en el plano los puntos X1, X2, X3, X4 de R2 con el cual se entrenar la RNA en este caso

Plano con los puntos (0,0), (0,1), (1,0), (1,1) para entrenar la RNA (funcin OR) La clase cero tiene 1 elementos {(0,0)} y la clase uno tiene 3 elementos {(0,1), (1,0), (1,1)}, disear, entrenar y simular la RNA.

Materia: Introduccin al Reconocimiento de Patrones Profesora: Alba Maribel Snchez Glvez Alumno: Alejandro Hernndez Catrip REPORTE DE ACTIVIDADES
DISEO DE LA RNA % Se establece la RNA con los valores mximo y mnimo para los puntos >> pr1_ej1 = newp([0,1;0,1],[0,1]); % Se emplearn 10 pocas para el entrenamiento >> pr1_ej1.trainParam.epochs = 10; >> P=[0 0 1 1; 0 1 0 1] P= 0 0 0 1 1 0 1 1

>> T=[0 1 1 1] T= 0 1 1 1

ENTRENAMIENTO DE LA RNA >> pr1_ej1 = train(pr1_ej1,P,T);

Entrenamiento de la Red

Materia: Introduccin al Reconocimiento de Patrones Profesora: Alba Maribel Snchez Glvez Alumno: Alejandro Hernndez Catrip REPORTE DE ACTIVIDADES
SIMULAR LA RNA >> valores = sim(pr1_ej1,P) valores = 0 1 1 1

En este caso, se simula la RNA empleando los valores para los pesos y el bias de forma aleatoria (es decir, valores asignados de manera aleatoria por MATLAB). >> pesos = pr1_ej1.iw{1,1} pesos = 2 2

>> bias = pr1_ej1.b{1} bias = -2 El punto (-1,5) en cul clase est ubicado? De acuerdo con la RNA entrenada, el punto (-1,5) es clasificado en la clase 1: % Se simula la red pr1_ej1 (RNA para la funcin OR) clasificando el punto (-1,5) >> valores = sim(pr1_ej1,[-1;5]) valores = 1 El punto (4,-10) en cul clase est ubicado? De acuerdo con la RNA entrenada, el punto (4,-10) es clasificado en la clase 0: % Se simula la red pr1_ej1 (RNA para la funcin OR) clasificando el punto (4,-10) >> valores = sim(pr1_ej1,[4;-10]) valores = 0

Materia: Introduccin al Reconocimiento de Patrones Profesora: Alba Maribel Snchez Glvez Alumno: Alejandro Hernndez Catrip REPORTE DE ACTIVIDADES
PARTE II Usando los siguientes puntos P1=(-2,3), P2=(-3,-7), P3=(-2,-4), P4=(-2,5), P5=(5,0), donde P1 y P5 estn en una clase y los otros en otra: Graficar los puntos en el plano y encontrar la ecuacin de la recta que los separa y graficarla

Puntos en el plano y ecuacin de la recta que los separa en 2 clases Para hallar la ecuacin de la recta, se tomaron en cuenta los puntos A(4,0) y B(0,4), por lo tanto, la pendiente tomar valor -1:

m=

y y 1 40 4 = = =1 x x1 04 4

y la ecuacin de la recta queda de la siguiente forma, considerando al punto A(4,0):

y y 1=m( xx 1 ) y0=(1)( x4) y=x +4 y + x4=0


De la ecuacin anterior (y + x 4 = 0) se sigue que los valores de los pesos y el bias para emplear en el perceptrn son:

Materia: Introduccin al Reconocimiento de Patrones Profesora: Alba Maribel Snchez Glvez Alumno: Alejandro Hernndez Catrip REPORTE DE ACTIVIDADES

w 1=1

w 2=1

b=4

Quedando el perceptrn de la siguiente manera:

X1

w 1=1
X2

w 2=1
Asignar los puntos

b=4

segn corresponda clase cero o bien clase uno

De acuerdo con los requerimientos, la clasificacin queda de la siguiente manera: Clase UNO(1) = {(2,3), (5,0)} Clase CERO(0) = {(-3,-7), (2,-4), (-2,5)} Disear, entrenar y simular la RNA en MATLAB Se muestra a continuacin el diseo y entrenamiento de la RNA en MATLAB % DISEO DE LA RNA >> pr1_ej2 = newp([-10 10; -10 10], [0,1]); >> pr1_ej2.trainParam.epochs = 10; >> P=[2 -3 2 -2 5; 3 -7 -4 5 0] P= 2 -3 2 -2 3 -7 -4 5 >> T=[1 0 0 0 1] T= 1 0 0 0 1 5 0

% ENTRENAMIENTO DE LA RNA >> pr1_ej2 = train(pr1_ej2,P,T);

Materia: Introduccin al Reconocimiento de Patrones Profesora: Alba Maribel Snchez Glvez Alumno: Alejandro Hernndez Catrip REPORTE DE ACTIVIDADES

Simulando la red (primero se utilizan valores aleatorios para los pesos y el bias) >> pesos = pr1_ej2.iw{1,1} pesos = 7 2

>> bias = pr1_ej2.b{1} bias = -7 >> valores = sim(pr1_ej2,P) valores = 1 0 0 0 1

>> Se observa que MATLAB devuelve los valores 7, 2 para W1 y W2 respectivamente y un valor -7 para el bias, esto produce la salida deseada para los puntos empleados (recordando que los valores iniciales para los pesos fueron aleatorios).

Materia: Introduccin al Reconocimiento de Patrones Profesora: Alba Maribel Snchez Glvez Alumno: Alejandro Hernndez Catrip REPORTE DE ACTIVIDADES
Empleando los pesos iniciales encontrados a partir de la ecuacin de la recta (W1 = W2 = 1, bias = -4), se tiene la siguiente salida: >> pr1_ej2.iw{1,1} = [1,1]; >> pr1_ej2.b{1} = [-4]; >> pr1_ej2 = train(pr1_ej2,P,T); >> valores = sim(pr1_ej2,P) valores = 1 0 0 0 1

>> pesos = pr1_ej2.iw{1,1} pesos = 1 1

>> bias = pr1_ej2.b{1} bias = -4 Comparar los pesos obtenidos y los pesos que entrega el entrenamiento de la RNA en MATLAB De acuerdo con esta salida, se obtuvieron los mismos resultados que se deseaban inicialmente, por lo que, en comparacin con los valores para los pesos entregados por MATLAB( 7, 2 ) y el bias = -7, se concluye que los valores para los pesos W1 y W2 de 1 para ambos y el bias = -4 son correctos, obtenidos a partir de la ecuacin de la recta x + y 4 = 0. Hacer la simulacin para encontrar en que clases estn los siguientes puntos: (1,-1), (4,4) Para el punto (1,-1) se obtuvo el siguiente resultado de clasificacin: >> valores = sim(pr1_ej2,[1;-1]) valores = 0 Esto concuerda con la informacin de la grfica, por lo tanto, el punto (1,-1) pertenece a la clase CERO

Para el punto (4,4) se obtuvo el siguiente resultado de clasificacin: >> valores = sim(pr1_ej2,[4;4])

Materia: Introduccin al Reconocimiento de Patrones Profesora: Alba Maribel Snchez Glvez Alumno: Alejandro Hernndez Catrip REPORTE DE ACTIVIDADES
valores = 1 Esto concuerda con la informacin de la grfica, por lo tanto, el punto (4,4) pertenece a la clase UNO III. DISEAR, ENTRENAR Y SIMULAR LA RNA QUE SEPARE LOS SIGUIENTES PUNTOS EN 4 CLASES (-7,1) y (-1,-2) estn en la clase I (-1,4) y (1,0) estn en la clase II (1,-5) y (-8,-7) estn en la clase III (10,-1) y (2,-2) estn en la clase IV a) Encontrar los pesos de la RNA b) Hacer la simulacin c) El punto (1,-1) y el punto (0,-2) en qu clase estn? d) Disear, entrenar y simular la RNA en MATLAB e) Comparar los pesos obtenidos y los pesos que entrega el entrenamiento en MATLAB

Materia: Introduccin al Reconocimiento de Patrones Profesora: Alba Maribel Snchez Glvez Alumno: Alejandro Hernndez Catrip REPORTE DE ACTIVIDADES

Grfica con los puntos a clasificar en el plano y las rectas que los separan (2x + y = 0, -6x +11y = -16) La simulacin, diseo y entrenamiento de la red es el siguiente: >> pr1_ej3 = newp([-10, 10; -10 10], 2); >> pr1_ej3.trainParam.epochs = 15; >> P=[-7 -1 -1 1 1 -8 10 2; 1 -2 4 0 -5 -7 -1 -2] P= -7 -1 -1 1 -2 4 1 1 -8 10 2 0 -5 -7 -1 -2

>> T=[0 1 0 1; 1 1 0 0] T= 0 1 1 1 0 0 1 0

Materia: Introduccin al Reconocimiento de Patrones Profesora: Alba Maribel Snchez Glvez Alumno: Alejandro Hernndez Catrip REPORTE DE ACTIVIDADES
>> T=[0 0 1 1 0 0 1 1; 1 1 1 1 0 0 0 0] T= 0 1 0 1 1 1 1 1 0 0 0 0 1 0 1 0

>> pr1_ej3 = train(pr1_ej3,P,T); >> pr1_ej3.trainParam.epochs = 30; >> pr1_ej3 = train(pr1_ej3,P,T); >> pr1_ej3 = train(pr1_ej3,P,T); >> pesos = pr1_ej3.iw{1,1} pesos = 6 3 -6 11 >> bias = pr1_ej3.b{1} bias = 0 16 >> valores = sim(pr1_ej3,P) valores = 0 1 0 1 1 1 1 1 0 0 0 0 1 0 1 0

Materia: Introduccin al Reconocimiento de Patrones Profesora: Alba Maribel Snchez Glvez Alumno: Alejandro Hernndez Catrip REPORTE DE ACTIVIDADES
>> view(pr1_ej3) >> y = pr1_ej3(T); >> plotpv(P,T) >> plotpv(y,T) >> valores = sim(pr1_ej3,[1;-1]) valores = 1 0 >> valores = sim(pr1_ej3,[0;-2]) valores = 0 0 >> plotpv(P,T) >> plotpc(pesos,bias) >> figure; >> plotpv(P,T) >> plotpc(pesos,bias) >> valores = sim(pr1_ej3,[-1;-2]) valores = 0 1 >> IV. SIMULAR UNA RNA PARA EL RECONOCIMIENTO DE DGITOS EN MATLAB Disear la RNA considerando que las entradas son la representacin de los dgitos en un display de siete segmentos y la salida es la representacin binaria de los dgitos Entrenar y simular la RNA Simule la RNA para tres aproximaciones que usted proponga

Entradas: >> P=[1 0 1 1 0 1 1 1 1 1; 1 1 1 1 1 0 0 1 1 1; 1 1 0 1 1 1 1 1 1 1; 1 0 1 1 0 1 1 0 1 0; 1 0 1 0 0 0 1 0 1 0; 1 0 0 0 1 1 1 0 1 1; 0 0 1 1 1 1 1 0 1 1]

Materia: Introduccin al Reconocimiento de Patrones Profesora: Alba Maribel Snchez Glvez Alumno: Alejandro Hernndez Catrip REPORTE DE ACTIVIDADES
P= 1 1 1 1 1 1 0 0 1 1 0 0 0 0 1 1 0 1 1 0 1 1 1 1 1 0 0 1 0 1 1 0 0 1 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1

Salidas: >> T = [0 0 0 0 0 0 0 0 1 1; 0 0 0 0 1 1 1 1 0 0; 0 0 1 1 0 0 1 1 0 0; 0 1 0 1 0 1 0 1 0 1] T= 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

Empleando el asistente Neural Network Start (nnstart):

El script resultante es el siguiente:

% Solve an Input-Output Fitting problem with a Neural Network

Materia: Introduccin al Reconocimiento de Patrones Profesora: Alba Maribel Snchez Glvez Alumno: Alejandro Hernndez Catrip REPORTE DE ACTIVIDADES
% Script generated by NFTOOL % Created Tue Jun 19 07:26:02 CDT 2012 % % This script assumes these variables are defined: % % P - input data. % T - target data. inputs = P; targets = T; % Create a Fitting Network hiddenLayerSize = 4; net = fitnet(hiddenLayerSize); % Setup Division of Data for Training, Validation, Testing net.divideParam.trainRatio = 70/100; net.divideParam.valRatio = 15/100; net.divideParam.testRatio = 15/100; % Train the Network [net,tr] = train(net,inputs,targets); % Test the Network outputs = net(inputs); errors = gsubtract(targets,outputs); performance = perform(net,targets,outputs) % View the Network view(net) % Plots % Uncomment these lines to enable various plots. %figure, plotperform(tr) %figure, plottrainstate(tr) %figure, plotfit(net,inputs,targets) %figure, plotregression(targets,outputs) %figure, ploterrhist(errors)

Materia: Introduccin al Reconocimiento de Patrones Profesora: Alba Maribel Snchez Glvez Alumno: Alejandro Hernndez Catrip REPORTE DE ACTIVIDADES
Prctica 2 Entrenar una RNA con dos capas, la capa oculta con dos neuronas y la capa de salida para la funcin XOR Cdigo empleado en MATLAB: >> P = [0 1 0 1; 0 1 1 0]; % Funcin XOR T = [0 0 1 1] plotpv(P,T,[-1, 2, -1, 2]); % plot data

PR = [min(P(1,:)) max(P(1,:)); min(P(2,:)) max(P(2,:))]; S1 = 2; S2 = 1; TF1 = 'tansig'; TF2 = 'logsig'; PF = 'mse'; net = newff(PR,[S1 S2],{TF1 TF2}); net.trainParam.epochs = 100; net.trainParam.goal = 0.0001;

Materia: Introduccin al Reconocimiento de Patrones Profesora: Alba Maribel Snchez Glvez Alumno: Alejandro Hernndez Catrip REPORTE DE ACTIVIDADES
net = train(net,P,T); a = sim(net,P) T= 0 0 1 1

Warning: NEWFF used in an obsolete way. > In obs_use at 18 In newff>create_network at 127 In newff at 102 See help for NEWFF to update calls to the new argument list. a= 0.0000 0.0000 0.9994 0.0000

You might also like