You are on page 1of 3

1

Topico
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 Perceptrn
Descripcin de la Interfaz grfica del programa
Patrones 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.
Prctica Redes Neuronales
Fabin Guamn
fabian.guamanc@gmail.com
Ismael Chacho
ismael_2934@hotmail.com
Universidad de Cuenca
Electrnica y Telecomunicaciones


2
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 Matlab
Generacion de nmeros aleatorios entre -2 y 2 para los pesos y entre -1 y 1 para el bias
W= 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 y
hold on;
ejeY=-2:4/100:2;
LineaY=0*ejeY;
plot(LineaY,ejeY,'lineStyle','-','Color','k');%Graficamos la linea del eje x

for i=1:4
if salida(i)==1
plot(entradas(1,i),entradas(2,i),'lineStyle','x','Color','r');
axis([-2 2 -2 2]);
else
hold on;
plot(entradas(1,i),entradas(2,i),'lineStyle','o','Color','r');
axis([-2 2 -2 2]);
end
end

Botn entrenamiento de la red
Las 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 fi las 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


3
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);

You might also like