Practica 1

download Practica 1

of 3

Transcript of Practica 1

2

Prctica Redes NeuronalesFabin [email protected] [email protected] de CuencaElectrnica y TelecomunicacionesTopico Es un informe de laboratorio sobre implementacin de los algoritmos Perceptron de una compuerta OR y Adaline de un decodificador de binario a decimal.

Objetivos.Reforzar los conocimientos sobre Redes Neuronales, concretamente sobre el funcionamiento del Perceptrn y el Adaline.

1. Perceptrn

Figura.1 Interfaz PerceptrnDescripcin de la Interfaz grfica del programaPatrones de Entrada y Patrones de Salida.- Los patrones de entrada y salida son la tabla de verdad de la compuerta OR que ser introducida en el algoritmo perceptron para su respectivo calculo los valores pusimos por defecto dentro del programa iniciaran al ejecutar el programa.Parmetros de Entrada.- Los parmetros de entrada son los dos pesos W1 y W2 y el bias que sern iniciados aleatoriamente al ejecutar la aplicacin.Botn de Entrenar.- al presionar este botn calculara los valores ptimos de las pesos y el bias adems con los valores ptimos graficara la recta de clasificacin para la compuerta OR.Comprobacin.- Para la comprobacin se introduce manualmente los valores en entrada de una compuerta OR y con el botn calcular calculara su salida con los pesos y bias ptimos ya calculados.

Explicacin del Cdigo en MatlabGeneracion de nmeros aleatorios entre -2 y 2 para los pesos y entre -1 y 1 para el biasW= rand(2,1)*3-2;b=rand(1).*2-1;

Lectura de los Patrones de Entrada y Patrones de Salida

entradas=str2num(get(handles.entradas,'String'));salida=str2num(get(handles.salida,'String'));set(handles.bias,'String',b);set(handles.w1,'String',W(1));set(handles.w2,'String',W(2));

Generacin del grafico para visualizar en una seccin de la aplicacin las clases o clsteres por medio de un bucle q compara si cada una de las salidas en 1 o -1 y dependiendo el valor de la salida se va a graficar x para el caso de q la salida de la compuerta sea 1 y o si la salida de la compuerta es -1.

ejeX=-2:4/100:2;LineaX=0*ejeX;plot(ejeX,LineaX,'lineStyle','-','Color','k'); %Graficamos la linea del eje yhold on;ejeY=-2:4/100:2;LineaY=0*ejeY;plot(LineaY,ejeY,'lineStyle','-','Color','k');%Graficamos la linea del eje x for i=1:4if salida(i)==1plot(entradas(1,i),entradas(2,i),'lineStyle','x','Color','r');axis([-2 2 -2 2]);elsehold on;plot(entradas(1,i),entradas(2,i),'lineStyle','o','Color','r');axis([-2 2 -2 2]);endend

Botn entrenamiento de la redLas entradas son una matriz de 2x4 al sacar la matriz transpuesta obtendremos la tabla de las entradas de la compuerta OR, luego con un bucle for procedemos al calculo de los bias y los pesos ptimos de la red , pero tambin es necesario otro for para que recorra las filas de la tabla de entradas que son 4 filas por eso el for va desde 1 hasta 4 y se almacena en una variable Yprima que es la entrada para que sea evaluada por la funcin de activacin expresada en el cdigo por la funcin sign.

Despus de todo este procedimiento hay que comparar si la salida de la funcin de activacin es igual a la salida esperada si no es hay que corregir el error sumando en cada uno de los pesos su peso anterior ms la multiplicacin de la salida deseada por la entrada de la compuerta OR luego q pase el for a hasta 4 pasara la primera iteracin y seguir hasta que la salida de la funcin de activacin sea igual a la salida esperada y por ultimo saldr del bucle principal con el comando break.

q=entradas'; for i=1:50 for j=1:4 Yprima(j)=W(1)*q(j,1)+W(2)*q(j,2)+b; Ysalida(j)=sign(Yprima(j)); if salida(j) ~= Ysalida(j) W(1)=W(1)+salida(j)*q(j,1);W(2)=W(2)+salida(j)*q(j,2);b=b+salida(j);end; end; if salida==Ysalida set(handles.w1Final,'String',W(1));set(handles.w2Final,'String',W(2));set(handles.bFinal,'String',b);set(handles.iteracion,'String',i)

Generacin de la curva de clasificacin para la compuerta OR

pendiente=W(1)/W(2);b1=b/W(2);x1=-1.9:0.2:1.9;x2=-pendiente*x1-b1;hold on;plot(x1,x2,'b');axis([-2 2 -2 2]);disp('sal');disp(salida);disp('compa');disp(Ysalida);break;end; end;

Botn de comprobacin

Extraccin de los parmetros x1, x2 en la variables a,c, luego se procede a la clculo de la tabla de verdad de la compuerta OR.a= str2num(get(handles.x1,'String'));c= str2num(get(handles.x2,'String'));w1 = str2num(get(handles.w1Final,'String'));w2 = str2num(get(handles.w2Final,'String'));b = str2num(get(handles.bFinal,'String'));valor = sign(a*w1+c*w2+b);disp (valor);set(handles.salidaComp,'String', valor);