Está en la página 1de 5

RED DE HOPFIELD.

La meta propuesta en es te laboratorio es diseñar una red neuronal que almacene un


conjunto de de puntos de equilibrio de tal forma que, cunado se da una condicion inicial
se presenta a la red, este servirà como punto de partida para la red la red y servira para
su convergencia. La red es recursiva en la salida y esta se vuelve a presentar a la entrada
hasta que se encuentre un punto de equilibrio.

La arquitectura de la red es presentada en la figura 1. y en ella se pueden observar los


patrones de entrada p, que son presentados a la red solo en el instantes cero. Los pesos
LW y los términos de polarización b. La función de transferencia es del tipo lineal
saturada, donde valores menores que 0 tienen una salida de cero, valores entre 0 y 1
tienen la misma salida y valores superiores a 1 saldrán siempre como 1 y su forma se
puede ver en la figura 2.

Fig 1. Estructura interna de una red de hopfield.

Fig 2. Funcion de transferencia de la red de hopfield.

Esta red puede ser probada presentado uno o más vectores de entrada como condiciones
iniciales de la red. Después de que la condición inicial es dada, la red produce una salida
que es nuevamente presentada como entrada. Este proceso se debe repetir hasta que se
encuentre un punto de equilibrio. Cada vector de entrada convergerá a aquel patrón que
sea mas parecido a él. La aplicación de las redes de hopfield es el filtrado de imágenes y
el reconocimiento de patrones.

FILTRADO DE IMAGENES DIGITALES.


El objetivo en este programa es que la red neuronal aprenda una imagen nítida y sin
ruido y que a partir de esta sea capaz de quitarle el ruido a otra imagen similar. Los
pasos que se deben seguir son los siguientes:

Leer las figura desde un archivo: las figuras original y a la que se va a realizar el filtrado
deben encontrarse en un archivo, y se deben leer desde matlab como se muestra en el
siguiente comando :

b1=imread('c:\matlab7\work\botel.bmp');

b1r=imread('c:\matlab7\work\botel_ruid.bmp');

La imágenes en formato RGV (rojo, Verde y azul) ocupan demasiado espacio en


memoria y resulta complicado el procesamiento por parte de las redes neuronales. Es
por esto conveniente pasarlo a formato blanco y negro por medio de los dos comandos:

b1bw=im2bw(b1);

b1rbw=im2bw(b1r);

Así los datos que deben procesar la red resultan menos complejos y tiene mayor
información. La imagen a color y a blanco y nefro tiene dimensiones de 20x20 pixeles
que es tamaño reducido para la mayoría de aplicaciones pero como nuestro ejemplo es
ilustrativo se puede usar este formato.

Las diferente imágenes sin ruido, con ruido y filtrada se muestran en la figura 3 en el
orden estricto de derecha a izquierda.

Fig 3. Imagen sin ruido, imagen con ruido, imagen filtrada.

El siguiente paso que debe seguir la en el programa es cambiar de formato la imagen,


Las imágenes son matrices (en nuestro caso de 20x20) y las redes neuronales aceptan la
información codificada en vectores columna para cambiar de formato se usan los
comandos:

T=reshape(b1bw,400,1);

Como solo hay necesidad de entrenar la red con la imagen original solo se le hace el
cambio a una sola matriz.

El siguiente paso que se debe seguir en el progrma es entrenar la red neuronal y esto se
logra con :
net=newhop(double(T));

Como se trata de una red con entrenamiento no supervisado no hay necesidad de


controlar el aprendizaje. La red aprende los patrones que se especifiquen.

Para mirar el desempeño que tiene la red se debe usar la imagen con ruido con su
formato cambiado a vector y simular la red y el resultado se puede mostrar en una
gráfica. El código es el siguiente:

T1=reshape(b1rbw,400,1);

[Y,Pf,Af] = sim(net,1,[ ],double(T1));

a=reshape(Y,20,20);

subplot(1,3,3)

imshow(a)

PROCEDIMIENTO:

- Elabore el programa con los pasos descritos anteriormente.


- Por medio del comando sim modifíquelo hasta que la salida de la imagen filtrada
sea idéntica a la imagen original.

- Investigue una aplicación de las redes de hopfield.

RECONOCIMIENTO DE PATRONES.

El objetivo del siguiente programa es hacer la clasificación de un patrón desconocido en


tres categorías diferentes. Las categorías de clasificación son círculos, cuadrados y
triangulos. Las figuras son almacenadas en tres archivos diferentes y se puen llamar
desde matlab con los comandos:

b1=imread('c:\matlab7\work\circulo.bmp');

b2=imread('c:\matlab7\work\cuadrado.bmp');

b3=imread('c:\matlab7\work\triang.bmp');

Como la imagen en formato RGB ocupa demasiado espacio en memoria se debe


cambiar el formato a blanco y negro como se muestra en los comandfos:

b1=imread('c:\matlab7\work\circulo.bmp');

b2=imread('c:\matlab7\work\cuadrado.bmp');
b3=imread('c:\matlab7\work\triang.bmp');

Posteriormente se le debe cambiar de formato a la imagen de matriz a vector columna


para que la información pueda ser procesada por la red neuronal y además se debe
formar un vector T donde se almacenen todos los datos de aprendizaje como se muestra
a continuación:

T=[reshape(b1bw,400,1) reshape(b2bw,400,1) reshape(b3bw,400,1)];

La red de hopfield se crea y entrena en un mismo comando y como es una red de


aprendizaje no supervizado no necesita controlar su aprendzaje. El comando es:

net=newhop(double(T));

Ahora se necesita hacer la clasificación una figura que se puede modificar del Saint y
presentarse la a la red. La figura está almacenada bajo el nombre identi.bmp y debe
colocarse en el directorio work de matlab. Los siguientes comandos muestran el proceso
previo que se le debe hacer a la imagen para poder ser presentada a la red

b4=imread('c:\matlab7\work\identi.bmp');

b4bw=im2bw(b4);

subplot(2,3,4)

imshow(b4bw)

Y=reshape(b4bw,400,1);

La imagen de salida se le debe presentar varias veces a la red hasta que la red presente
una salida estable, para nuestro caso se presenta 25 veces aunque es demasiado para
varios casos. Los comandos para hacer la presentación del patrón se muestra a
continuación:

for i=1:25

[Y,Pf,Af] = sim(net,1,[ ],double(Y));

a=reshape(Y,20,20);

subplot(2,3,6)

imshow(a)

q=sprintf('comparacion %i',i);

title(q)

pause(0.1)
end

La presentación final del programa se pude observar en la figura 4

Fig 4. Apariencia final del programa.

La imagen de la esquina inferior izquierda es la imagen a la cual se le quiere hacer el


reconocimiento y la de la esquina inferior derecha es la imagen después de haberla
presentado 3 veces a la red.

PROCEDIMEINTO.

- Realice un programa que ejecute el programa anterior.


- Haga imágenes en paint donde se encuentren la cinco vocales del abecedario.

- Cree una red neuronal que las almacene.

- Cree otra figura donde se le cambie el formato de la letra y haga una vocal.

- Haga que la red neuronal reconozca las diferentes vocales.

También podría gustarte