Vous êtes sur la page 1sur 24

ALUMNO: VIDAL CORTEZ CHRISTIAN RAPHAEL

ENTRENAR UNA REDE NEURONAL PARA RECONOCER ICONOS DIBUJADOS EN UNA MATRIZ

Primero debemos de analizar la formacion de bits que tendran los iconos para poder ser
reconocidas. Diseamos nuestras matrices.

En una matriz de 7X5 se dibujara los


patrones que se quieran reconocer.

Despues de disear los patrones, se procede a indicar con 1 bit en 5 celdas por fila la forma
en que se reconocera el elemento. Sera como nuestra matriz de reconocimiento deseada.

Una vez establecidos los patrones a reconocer, la matriz debe ser ordenada de la siguiente
manera:

Cada fila es la representacion de un icono en matriz.


En esta ocasin, la matriz fue guardada en un bloc de notas, con el tipo de extension .txt
(RecIconos.txt)
Una vez ordenado las matrices de los iconos, procedemos a guardar en texto plano la matriz
de reconocimiento deseada:

(Deseado.txt)

Creamos un tercer archivo donde guardaremos los resultados obtenidos.

En este caso lo guardara como Resultado.txt

Una vez creado estos tres archivos .txt procedemos a utilizar la herramienta JOONE

Iniciado el programa colocamos, seleccionamos de la barra de herramientas el boton para


incluir un archivo de entrada. New File Input Layer.
Click derecho sobre el elemento, y abrimos sus propiedades(Properties):

Cambiamos la propiedad name por DatosEntrada, y en inputFile seleccionamos los datos


de las matrices. (RecIconos.txt)
Y luego, en Advanced Column Selector especificamos la longitud de datos que sera
seleccionado del archivo. Mis matrices al ser 5X7 lo indicamos de la siguiente forma

Quedando de la siguiente manera:


Continuamos agregando las tres capas, la Capa de Entrada, la Capa Oculta y la Capa de
Salida:

Capa de Entrada:

De la barra de herramientas seleccionaremos un nuevo campo sigmoidal (New Sigmoid


Layer)

Le damos el nombre de CapaEntrada, y en rows le indicamos que seran 35 bits, que seran
reconocidas de nuestras matrices ingresadas
Terminando con CapaEntrada enlazamos la capa con el archivo de DatosEntrada:

CapaOculta

Le damos el nombre(name) de CapaOculta y le asginamos como rows 6

Y la enlazamos con CapaEntrada


CapaSalida

Agregamos otro campo sigmoidal, y editamos el Nombre por CapaSalida y rows por 5

Una vez agregada las 3 capas de la red neuronal, agregamos al entrenador y al mismo
tiempo agregamos los archivos de bits, que sera en lo que el entrenador se basara para
obtener los resultados, esto serian los datos deseados:

DatosDeseados

Seleccionamos al igual que DatosEntrado la herramienta de File Input, para traer el archivo
.txt donde especificamos los datos que necesitamos obtener de cada matriz para ser
reconocida.
Editamos su propiedades de la siguiente manera:

En inputFile seleccionamos el archivo deseado, y en Advanced Column Selector, la longitud


que se evaluara del texto plano seleccionado.

Luego agregaremos al entrenado o teacher de la tabla de herramientas (New Teacher Layer)

Damos doble click sobre el, y editamos el nombre a nuestra preferencia, en mi caso le di el
nombre de Teacher

Terminando de agregar al entrenador enlazamos con la Capa de Salida

Ahora, para ver los resultados de este entrenamiento de nuestra red neuronal debemos
agregar un archivo de salida, donde se almaneceran los datos resultantes del entrenamiento
Lo agregamos de la barra de herramientas(New File Output Layer)

Editamos sus propiedades

Cambiamos su nombre por Resultados, y especificamos fileName.


Donde fileName sera la direccion del archivo donde guardaremos los datos resultantes.

Enlazamos los campo de Fila Output con nuestra CapaSalida


Terminando de agregar y editar nuestras capas, archivos, y al entrenador, accedemos al
menu de barras > Tools > Control Panel y entonces no aparecera esto:

Seleccionamos el checkbox learning

Especificamos learningRate 0,7 para indicar cuan flexible sera nuestro reconocimiento

Especificamos momentum 0,4

En epocas asignamos 1000

Y en Training patterns ingresamos 4

Una vez agregados nuestra configuracion, le damos click al boton Run

Observamos los resultados RMSE y tenemos que asegurarnos que el resultado sea inferior a
1

Ahora podemos visualizar los resultados de nuestra red:


Observamos nuestra Bias en CapaEntrada las copiamos y agregamos a nuestro archivo Excel

Inspeccionamos los pesos entre CapaEntrada y CapaOculta

Las Bias de CapaOculta


Los pesos entre CapaOculta y CapaSalida

Las Bias de CapaSalida


Y agregamos todos esos datos a nuestro archivo Excel
En la columna Patron de Entrada

Colocamos como referencia a una de nuestra matricez donde se dibujaron nuestros iconos

En la columna Bias de Entrada, agregamos los resultados de nuesta CapaEntrada

En la siguiente columna se sumara las filas de bias entrada con los patrones de entrada del
usuario

Bias de entradas + Patrones de entrada del usuario.

En la siguiente columna calculamos el sigmoidal de la entrada con la siguiente formula:

1/(1+EXP(-1*SUMA_DE_PATRONES_Y_BIAS))

En las siguiente columnas colocamos los pesos generados entre CapaEntrada y CapaSalida

Luego calculamos la suma de productos de la columna sigmoidal de entrada con cada


columna generada por cada columna de nuestros pesos CapaEntrada-CapaOculta

SUMA DE PRODUCTOS = COLUMNA SIGMOIDAL DE ENTRADA ; CADA COLUMNA DE PESOS


ENTRADA-OCULTA
En la columna Bias de la Oculta

Agregamos los datos generados en nuestra CapaOculta en Joone

En las siguientes filas se repetira los proceso anteriormente mencionadas. Se compartira el


archivo para la revision.

Terminando los calculos, para observar el funcionamiento de nuestra red, procederemos a


implementarla en nuestra aplicacin de Netbeans.

En nuestra aplicacin, inicializamos nuestras variables:

Donde fila y columan representan nuestra matriz

Nuestra neuronas de entrada, oculta y salida que analizaran los patrones ingresados

Y las variables i, j, k que la usaremos para nuestros bucles for.


Agregamos los valores de pesos entre CapaEntrada CapaOculta en un array declarado
como tipo double:

Agregamos los valores a nuestro arreglos pesos_oculta_salida de nuestro red entrenada

Agregamos valores a nuestro arreglo bias_entrada


Agregamos nuestro valores a nuestro arreglo bias_oculta
Declaramos nuestro arreglos que se calcularan como lo hicimos en el excel:

Y realizamos los calculos recorriendo los arreglos con nuestro ciclos for, y tambien
construimos la interfaz de salida:
Continuamos programando la heuristica para saber si el patron es coherente donde
emitiremos una mensaje para reconocer el patron dibujado.

Terminando con la parte logica de la aplicacin procedemos a construir el aspecto fisico de la


siguiente manera

Inicializamos las variables de cada label puesto en el diseo:


Programamos nuestro boton de analizar para recorrer los patrones dibujados
Programamos nuestro boton de limpiar para borrar el patron dibujado:

Y continuamos programando el aspecto referencial donde se pintara el fondo de cada


label(Background) del color especificado y dandole el nombre de 1 si se hizo click encima y
tenia como nombre anteriormente el numero 0.

Asi pues tambien se condicionara cuando no est activado.

Y YA HEMOS TERMINADO DE CONSTRUIR NUESTRA RED NEURONAL PARA RECONOCER LOS


ICONOS
DEMOSTRACION

Vous aimerez peut-être aussi