Este documento describe la biblioteca Art Gallery, la cual implementa redes neuronales de tipo ART. Incluye una descripción de los archivos, tipos de redes ART y ARTMAP, cómo inicializar y entrenar las redes, probarlas y guardarlas. También describe cómo crear conjuntos de patrones y los tipos de datos de entrada que soporta la biblioteca.
2. Contenido
Introducción
1 Descripción de archivos
1.1 Archivos UNIX
1.2 Archivos DOS
1.3 Simulador de muestra para Windows
1.4 Reporte de Fallas
2 Descripción de Art Gallery Networks
2.1 Repaso de la Red
2.1.1 Tipos de red
2.1.2 Red tipo ART (Teoría de Resonancia Adaptativa)
2.1.3 Red tipo ARTMAP
2.1.4 Componentes tipo ART
2.2 Datos de entrada de la red
2.2.1 "Estilos" de datos
2.3 Activación de la red
2.3.1 Inicializando una red
2.3.2 Acceder a estructuras de información de la red
2.3.3 Entrenando la red
2.3.4 Pruebas de la red
2.3.5 Guardar y Leer redes
2.3.6 Liberando espacio de la red
2.4 Conjuntos de patrones
2.4.1 Crear un conjunto patrones
2.4.2 Datos Tipo
2.4.3 Examinando parámetros de un patrón y datos
2.4.4 Guardar y leer un conjunto patrones
2.4.5 Combinando conjuntos de patrones
2.4.6 Liberar espacio de un conjunto de patrones
2.5 Anotando errores de chequeo e inicialización de variables
2.6 Complementar código y estabilidad de la red
3 Compilar The Art Gallery como una DLL
3.1 Usar The Art Gallery en Visual Basic
4 Simuladores de ejemplo
4.1 Simulador en modo texto para Unix y DOS
4.2 Simulador en Windows de Art Gallery
5 Entrenando y probando archivos
5.1 Conjunto de entrenamiento para una red de Ejemplo
5.2 Datos de ejemplo para crear una red
6 Constantes
7 Sumario de funciones de ART GALLERY
8 Referencias
3. INTRODUCCION
The Art Gallery es una serie de procedimientos que pueden ser utilizados con otro lenguaje para
implementar muchas de las redes neuronales de tipo ART.
Actualmente The Art Gallery soporta llamadas a procedimientos en C, en las plataformas Unix y
DOS, así como la compilación como una librería dinámica ligada (dll) para usarse con aplicaciones Windows
(como Visual Basic).
Dos simuladores de prueba se proveen con el código. Uno corre una versión modo texto bajo Unix y
DOS, el otro, en una versión con interfaz gráfica para Windows.
Las estructuras de datos de las redes ART y conjuntos de patrones están diseñadas de tal manera
que el usuario no necesita acceder a las estructuras directamente, pero puede llamarlas en otros
procedimientos si necesita información.
4. 1 Descripción de archivos
Los siguientes archivos deben ser incluidos con Art Gallery:
README.TXT - Información acerca de archivos de compilación
/UNIX - Subdirectorio con archivos para plataforma Unix
/DOS - Subdirectorio con archivos para plataforma DOS
/WIN - Subdirectorio con archivos de instalación para simulador de Windows
1.1 Archivos UNIX
VER_1.0- Numero de Versión, información acerca de cambio de códigos
Art_Doc.txt - ayuda con Art Library
Art_Gal.h - Archivo de encabezado general
Art_Def.h - Constantes, red y definicion del conjunto de patrones
Art_Ext.c - Librería de procedimientos externos
Art_Ext.h - Archivo de encabezado para procedimientos externos
Art_Int.c - Librería de procedimientos internos
Art_Int.h - Archivo de encabezado para procedimientos internos
Makefile - Makefile para GCC
Art_Sim.c - Ejemplo de simulador de texto
train.pat - Ejemplo de archivo de entrenamiento
test.pat - Ejemplo de archivo de prueba
analog.dat - Ejemplo de datos para crear conjuntos (Makeset)
binary.dat - Ejemplo de datos para crear conjuntos (Makeset)
1.2 Archivos DOS:
Los archivos vienen compresos con PKZIP como “dos_gal.zip”.
VER_1.0-Numero de Versión, información acerca de cambio de códigos
Art_Doc.txt - Ayuda
Art_Gal.h - Archivo de encabezado general
Art_Def.h - Constantes, red y definiciones de conjunto de patrones
Art_Ext.c - Librería de procedimientos externos
Art_Ext.h - Archivo de Encabezado de archivo para procedimientos externos
Art_Int.c - Librería de procedimientos internos
Art_Int.h - Archivo de encabezado para procedimientos internos
Art_Sim.mak - Makefile para Borland C++
Art_Sim.cfg - Archivo de configuración para Borland C++
Art_Gal.mak - Makefile para Borland C++;
Art_Gal.cfg - Archivo de configuración para Borland C++
Art_DLL.c - Código DLL
Art_Gal.def - Código DLL
Art_Sim.c - Ejemplo de simulador de texto
train.pat - Ejemplo de archivo de entrenamiento
test.pat - Ejemplo de archivo de prueba
analog.dat - Ejemplo de datos para crear conjuntos (Makeset)
binary.dat - Ejemplo de datos para crear conjuntos(Makeset)
Default.bas - Ejemplo de como declarar la DLL en visual Basic
1.3 Simulador de muestra para Windows
5. Los archivos vienen compresos con PKZIP como “win_gal.zip”.
Reporte de Fallas
Todos los reportes de fallas, comentarios y sugerencias podrían ser enviadas laliden@cns.bu.edu
6. 2 Descripción de Art Gallery Networks
2.1 Repaso de la red
The Art Gallery soporta los paradigmas de aprendizaje supervisado y no supervisado.
La red consiste en conjuntos con pesos aprendidos, así como especificaciones acerca del tipo de red
que será utilizada. Los datos son almacenados en una estructura de datos del tipo "netTYPE" y puede estar
señalado por un puntero tipo "netPTR" cada uno de los cuales está definido en Art_Gal.h.
Los datos de la red pueden (y deben) ser accesados sin referencia a partes de la estructura de
datos en si misma. Las funciones han sido provistas para un acceso fácil a la información de la red.
2.1.1 Tipos de red
Las redes pueden ser de dos tipos, ART(Teoría de Resonancia Adaptativa), para aprendizaje no
supervisado y las redes ARTMAP para aprendizaje supervisado. Ambas redes son hechas con componentes
ART, cada uno pueden tomar diferentes formas incluyendo ART1 y FUZZYART.
Un tipo de red puede ser verificado usando GetNetType.
2.1.2 Tipos de red ART
El tipo de red neuronal ART es utilizado para aprendizaje no supervisado. Consiste en un
componente ART, llamado “ART”, y toma como entradas a un conjunto de patrones.
La red aprende a agrupar las entradas hacia categorías de salidas que subsecuentemente son
examinadas como nuevos patrones de entrada.
El componente ART puede ser de tipo ART1, para patrones de entradas binarios o tipo FUZZYART
para patrones de entrada analógicos.
2.1.3 Tipo de red ARTMAP
El tipo de red ARTMAP es utilizado para aprendizaje supervisado. Consiste en dos componentes, una
red de entrada ART, llamada “ARTA”, y una red de salida ART, llamada “ARTB”, y toma los patrones de
entrada y salida. Los dos componentes están conectados por un mapa de campo o Mapfield.
La red de entrada ART, ARTA, agrupa los patrones de entrada basados en retroalimentación del
Mapfield. El componente ARTA puede ser de tipo ART1 para entradas binarias, o FUZZYART para entradas
analógicas.
La red de salida ART, ARTB, agrupa los patrones de salidas deseadas y envía activaciones
categóricas a los Mapfield. El componente ARTB puede ser de tipo ART1, para salidas Binarias, o
FUZZYART, para salidas analógicas, o de tipo NONE.
Cuando la salida ARTB, es de tipo NONE, el valor de salida deseada se envía directamente al
Mapfield antes de ser agrupada por ARTB.
Note que la entrada a la red ARTB , es actualmente el patrón de salida de la red.
2.1.4 Tipos de componentes Art.
Actualmente se soportan dos tipos de componentes ART, ART1 y FUZZYART. ART1 aprende a
agrupar patrones de entrada binarios mientras que FUZZYART aprende a agrupar ambos patrones de
entrada, binario y analógico.
Adicionalmente, el componente ARTB del tipo de red ARTMAP puede llegar a ser del tipo NONE, si
no se desea un componente ARTB.
El tipo de un componente puede ser verificado utilizando GetArtType.
2.2 Datos de entrada a la red
7. Las redes de tipo ART (usando aprendizaje no supervisado) solamente toman datos de entrada, que
son presentados en el componente ART. de la red.
Las redes de tipo ARTMAP (usando aprendizaje supervisado) toman un conjunto de entrada y
salida. Los datos de entrada son presentados como entradas al componente ARTA y la salida es presentada
como entrada en el componente ARTB
2.2.1 Estilo de datos
Cada componente ART utiliza uno de los dos estilos de datos, NONE o COMPLIMENT
Cuando el tipo de dato tiene el valor COMPLIMENT, la entrada ART es completamente codificada
antes de ser presentada a la red.
Cuando es tipo NONE, la codificación completa no es utilizada.
Los estilos de entrada de los componentes de red pueden ser verificados utilizando GetArtStyle.
2.3 Activación de la red
2.3.1 Inicializando la red
Para crear una nueva red se debe utilizar el procedimiento InitNet. Se le debe de pasar un puntero
a una estructura del tipo "netTYPE". Esta estructura es definida en Art_Def.h.
InitNet debe pasar la siguiente información:
El tipo de red (ART o ARTMAP)
Cuando el tipo ART es usado:
El tipo de componente ART a utilizar (ART1 o FUZZYART)
El estilo de entradas (NONE o COMPLIMENT)
El número de entradas al componente ART
Cuando el tipo ARTMAP es usado:
El tipo de componente ARTA a utilizar (ART1 o FUZZYART)
El estilo de entradas (NONE o COMPLIMENT)
El número de entradas al componente ARTA
El tipo de componente ARTB a utilizar (ART1 o FUZZYART o NONE)
El estilo de entradas (NONE o COMPLIMENT)
El número de entradas a el componente ARTB (igual al número de salidas de la red)
Cuando el estilo COMPLIMENT es elegido por un componente, el número de entradas para ese
componente debe ser el doble de tamaño del patrón de entrada contenido en el archivo de patrones.
Para inicializar una red que ya ha sido cargada, FreeNet debe ser llamado primero para borrar el
contenido de la red.
2.3.2 Acceder a la información de la estructura de la red
Para conseguir información acerca de una red que ha sido ya creada se puede utiliza lo siguiente:
Para obtener el tipo de red, utilizar GetNetType.
Para obtener el tipo de componentes, utilizar GetArtType
Para obtener el estilo de componentes, utilizar GetArtStyle.
Para ver el tamaño de entrada, utilizar GetNetInSize
Para ver el tamaño de salida, utilizar GetNetOutSize
2.3.3 Entrenando a la red
8. La red es entrenada utilizando el procedimiento , TrainSet. A TrainSet se le deben pasar: un
apuntador para inicializar una red de tipo "netTYPE",un puntero para un conjunto de patrones de
entrenamiento del tipo "setTYPE", y un número máximo de épocas de entrenamiento
Antes de llamar a TrainSet, los niveles de vigilancia y rangos de respuesta pueden ser utilizados
mediante SetArtVigil, SetArtBeta y SetMapVigil.
Este procedimiento continuara entrenando a la red hasta estabilizar el aprendizaje que ha sido
archivado o cuando el máximo número de iteraciones se ha cumplido.
Después de cada época de entrenamiento, TrainSet actualiza la información acerca del número de
reinicios y continuaciones que ocurren durante la época de entrenamiento. Esta información puede ser
accedida utilizando GetArtResets y GetNetMismatch.
Adicionalmente, TrainSet nota cuando la red ha alcanzado una estabilización de su aprendizaje. Esto
puede ser verificado utilizando GetNetDone, que regresa TRUE cuando la red ha estabilizada su aprendizaje
o un FALSE de otra manera.
2.3.4 Probar la red
La actividad de la red puede ser verificada usando TESTNET la cual regresara información acerca
del numero de ARTA y ARTB sin respuestas, el numero de entradas correctamente clasificadas y el número
incorrectamente clasificado. Note que para la red ART no existe una cosa tal como incorrectamente
clasificado una entrada como el aprendizaje de clasificación es no supervisada. La red puede únicamente
cometer un error pero no contestarlo(por ejemplo, si no conoce el nivel de vigilancia).
Alternativamente, la red puede ser probada usando un SHOWPAR, el cual presenta un solo patrón a
la red del conjunto de patrones. Para acceder a las activaciones del resultado de la red use lo siguiente:
GetArtWinner que regresa la categoría ganadora para un componente ART y GetMap regresa el mapa de
campo de activaciones.
2.3.5 Guardar y Leer redes
Todas las redes son almacenadas en archivos con extensión ".net". Esta extensión es
automáticamente añadida a el nombre de archivo, cuando los archivos son salvados y cargados.
Para cargar o salvar una red use LoadNet y SaveNet sin el ".net"
2.3.6 Liberando espacio de la red
Cuando una red ya no va a ser utilizada es una buena idea liberar memoria utilizada por la red antes
de cargarla o inicializar una nueva red. Esto puede ser hecho utilizando: FreeNet.
Pueden ocurrir fallas si falta memoria
2.4 Conjuntos de patrones
Un conjunto de patrones consiste en una lista de patrones de entrada (en algunos casos salidas)
para ser introducidos a la red así como las especificaciones sobre el tipo de datos contenidos en el conjunto
de patrones. Ellos son almacenados en una estructura de datos de tipo "setTYPE", y pueden ser apuntadas
por un apuntador de tipo "setPTR" ambos están definidos en Art_Lib.h.
2.4.1 Creando un conjunto de patrones
Los conjuntos de patrones son creados utilizando MakeSet. MakeSet crea un nuevo conjunto dando
el número deseado de patrones de entradas y salidas, para el conjunto de patrones, así como el tipo de
patrones y 2 archivos que contienen los datos de entrada y salida.
9. Los patrones de entrada y salida pueden ser de tipo analógico o binario. Los patrones de salida
pueden también ser de tipo NONE si el conjunto va a contener únicamente patrones de entrada.
Los dos archivos de datos que contienen los datos de entrada y salida suelen consistir de un
número por línea, sin líneas en blanco entre patrones. Dos ejemplos de archivos son "analog.dat" y
"binary.dat" han sido provistos para demostrar como deben ser hechos.
Los patrones pueden ser añadidos utilizando la función AddPattern.
2.4.2 Tipos de datos
Los datos de entrada y salida vienen en tres tipos NONE, BINARY y ANALOG.
Los patrones Binarios pueden ser 0 o 1 y pueden ser utilizados con cualquier componente ART1 o
FUZZYART.
Los patrones de entrada Analógicos oscilaran entre 0 y 1, pueden ser únicamente utilizados con
componentes FUZZYART .
El tipo de red ART no utiliza patrones de salida pero las salidas pueden ser de cualquier tipo
incluyendo NONE.
2.4.3 Examinando parámetros de conjuntos de patrones y datos
Los datos en un conjuntos de patrones pueden ( y deben ) ser accesados sin referencia a parte de
los datos de la estructura misma. Un número de funciones ha sido provisto para acceso fácil a la
información de el conjunto de patrones.
El tamaño y tipo de los patrones de entrada para un conjunto de patrones puede ser verificado
usando las funciones GetSetInSize, GetSetOutSize, GetSetInType, y GetSetOutType.
Patrones particulares de datos de entrada y salida pueden ser regresados usando las funciones
GetSetInput y GetSetOutput.
Para encontrar el numero de patrones en el conjunto se puede utilizar: GetNumPatterns.
2.4.4 Salvando y cargando conjuntos de patrones
Todos los conjuntos de patrones son almacenados en archivos con extensión ".set". Esta extensión
es automáticamente añadida a el nombre de archivo cuando los archivos son cargados o salvados.
Los conjuntos de patrones pueden ser cargados o salvados utilizando SaveSet y LoadSet sin la
extensión ".set"
2.4.5 Combinando conjuntos de patrones
Dos conjuntos de patrones pueden ser mezclados utilizando MargeSets.
2.4.6 Liberando espacio de conjuntos de patrones
Cuando el conjunto de patrones ya no será utilizado por un buen tiempo seria buena idea liberar la
memoria usada por el conjunto de patrones antes de cargar o inicializar un nuevo conjunto de patrones.
Esto puede ser hecho utilizando FreeSet.
Se podrían presentar resultados erróneos si se ejecutan sin memoria.
2.5 Verificando errores de chequeo e inicialización de variables
Los procedimientos en The Art Gallery ... con todas las variables son casi siempre la inicialización
antes de ser usadas.
GetNetInit y GetSetInit pueden ser utilizadas para verificar el estado de inicialización del conjunto de
patrones o de la red.
10. Note, que de cualquier manera siempre existe una pequeña posibilidad de que el área de memoria
elegida para la inicialización pueda contener(accidentalmente) el valor de TRUE. Esto es especialmente
cierto en la plataforma PC. En este caso la verificación inicial fallara y las funciones GetNetInit y GetSetInit
regresaran valores incorrectos. El único camino para asegurarnos al 100% de que el procedimiento
regresara un valor esperado es llamándolos únicamente con conjuntos de patrones y de red inicializadores.
2.6 Compliment Coding y estabilidad de la red
Es recomendable utilizar la herramienta compliment coding cuando se crea una red para asegurar
que el aprendizaje se estabilizara en algún momento. Sin esta herramienta establecida las categorización de
la red puede falla, esto es especialmente importante cuando el tipo NONE es seleccionado de un red ARTB.
Cuando compliment coding es utilizado el tamaño de las entradas de la red debe ser el doble del
tamaño de las entradas en el conjunto de patrones. Los valores del compliment coding son
automáticamente calculados por el programa.
Cuando la red utiliza compliment coding, una copia 'negative' de las entrada también es presentada
en la red. Así, por ejemplo, si un patrón de entrada consiste en 5 valores y compliment coding se está
usado, la red debe tener un tamaño de entrada de 10:
El conjunto de patrones de entrada en el archivo de patrones:
0.2 0.3 0.5 0.7 0.1
Entradas presentadas a la red cuando el estilo COMPLIMENT es elegido:
0.2 0.3 0.5 0.7 0.1 0.8 0.7 0.5 0.3 0.9
11. 3 Compilar The Art Gallery como una Librería Dinámica (DLL)
The Art Gallery puede ser compilado como una DLL utilizando Borland C++. Esto permite que las
funciones de ART Gallery sean llamadas de otras aplicaciones de Windows.
La dll se puede crear tecleando lo siguiente en el prompt: 'make -f art_gal'
El resultado del archivo dll puede ser llamado: 'Art_Gal.dll'
3.1 Usando la DLL The Art Gallery en Visual Basic
Una vez que The Art Gallery ha sido compilada como una DLL, y declarada en Visual Basic, las
funciones de The Art Gallery pueden ser llamadas de Visual Basic.
El archivo 'Default.bas' contiene un modulo demostrativo de cómo la DLL The Art Gallery debe ser
declarada en Visual Basic
12. 4 Simuladores de ejemplo
4.1 Simulador en modo texto para Unix y DOS
El Archivo “Art_Sim.c” se incluye con The Art Gallery. Este contiene un ejemplo de como se deberá
usar The Art Gallery para crear una simulación simple en modo texto para una red neuronal.
Un ejemplo de entrenamiento y prueba se incluye.
En UNIX:
Art_Sim.c puede ser compilado incluyendo el Makefile usando el comando “make” en el prompt de
UNIX.
En DOS:( Usando Borland C++)
Art_Sim.c puede ser compilado desde el prompt del DOS con: “make –f art_sim”
4.2 Sample Windows ART Gallery Simulator
El archivo “win_gal.zip” contiene el programa de instalación para correr una versión grafica de The
Art Gallery, “Art_Gal.exe” fue creado usando las funciones compiladas como DLL de The Art Gallery.
13. 5 Entrenando y probando archivos
Un archivo de ejemplo de entrenamiento y conjunto de patrones de prueba (train.pat y test.pat)
viene incluido con la librería de The Art Gallery.
Cada uno consiste de 11 vectores de entrada análogos y 6 vectores de salida binarios.
5.1 Conjunto de entrenamiento para una red de Ejemplo
Este conjunto de datos puede ser usado por varios tipos de redes. A continuación mostramos unos
ejemplos:
Aprendizaje No Supervisado (Vectores de salida sin usar)
Tipo de red: ART
Art Type: FuzzyArt *
Tamaño de entrada: 11
Estilo de Entrada: Ninguno
Aprendizaje Supervisado con Modulo ArtB y Compliment Coding
Tipo de red: ARTMAP
ArtA Type: FuzzyART *
Tamaño de Entrada: 11 **
Estilo de Entrada: COMPLIMENT
ArtB Type: ART1 ***
Tamaño de Entrada: 6
Estilo de Entrada: Ninguno
Aprendizaje Supervisado sin Modulo de entrenamiento ArtB
Tipo de red: ARTMAP
ArtA Type: FuzzyART *
Tamaño de Entrada: 11 **
Estilo de Entrada: Ninguno
ArtB Type: Ninguno
Tamaño de Entrada: 6 ****
Network Type: ARTMAP
ArtA Type: FuzzyART *
Input Size: 11
Input Style: NONE
ArtB Type: NONE
Input Size: 6 ****
* - La entrada debe ser tipo FuzzyART donde las entradas sean analogas.
** - Con compliment coding el tamaño de la entrada es del doble del tamaño del vector de entrada en el
conjunto de patrones.
*** - El tipo de entrada para la red ARTB puede ser tanto FuzzyART como ART1, donde ambos pueden
tomar patrones binarios.
**** - El tamaño de entrada ARTB es el tamaño de el vector de entrada (no zero) siempre y cuando no sea
utilizado el entrenamiento ARTB.
14. 5.2 Datos de ejemplo para crear una red
Los archivos “analog.dat" y "binary.dat" contienen datos aleatorios análogos y binarios para crear
un nuevo conjunto de patrones.
15. 6 Constantes
Las siguientes constantes están definidas en Art_Gal.h y pueden ser usadas en las llamadas a
funciones:
Tipos de red:
ART 0
ARTMAP 1
Componentes:
ART 0
ARTA 1
ARTB 2
Tipo de Componentes:
NONE 0
ART1 1
FUZZYART 2
Valores Booleanos:
FALSE 0
TRUE 5571
Tipos de Datos:
NONE 0
BINARY 1
ANALOG 2
Estilo de Datos:
NONE 0
COMPLIMENT 1
16. 7 Sumario de funciones de ART GALLERY
NOTA: Los argumentos dentro de los paréntesis solo se requieren cuando se usa la red ARTMAP.
int AddPattern (setPTR set, int num_inputs, float *input,int num_outputs, float *output)
int FreeNet (netPTR net)
int FreeSet (setPTR set)
int GetArtBeta (netPTR net, int component, float *beta)
int GetArtResets (netPTR net, int component)
int GetArtSize (netPTR net, int component)
int GetArtType (netPTR net, int component)
int GetArtStyle (netPTR net, int component)
int GetArtVigil (netPTR net, int component, float *vigil)
int GetArtWinner (netPTR net, int component)
int GetBaseVigil (netPTR net, float *vigil)
int GetMap (netPTR net, float *list)
int GetMapMismatch (netPTR net)
int GetMapSize (netPTR net)
int GetMapVigil (netPTR net, float *vigil)
int GetNetDone (netPTR net)
int GetNetInit (netPTR net)
int GetNetInSize (netPTR net)
int GetNetOutSize (netPTR net)
int GetNetType (netPTR net)
int GetNumPatterns (setPTR set)
int GetSetInit (setPTR set)
int GetSetInput (setPTR set, int pat_num, float *list)
int GetSetInSize (setPTR set)
int GetSetInType (setPTR set)
int GetSetOutput (setPTR set, int pat_num, float *list)
int GetSetOutSize (setPTR set)
int GetSetOutType (setPTR set)
int InitNet (netPTR net, int net_type, int components, int styleA, int num_inputs,
int componentB, int styleB, int num_outputs)
int InitSet (setPTR set, int num_inputs, int type_inputs, int num_outputs, int type_outputs)
int LoadNet (netPTR net, char *file_prefix)
int LoadSet (setPTR set, char *file_prefix)
int MakeSet (setPTR set, char *infile_name,int num_inputs, int type_inputs, char *outfile_name,
int num_outputs, int type_outputs)
int MergeSets (char *file1_prefix, char *file2_prefix, char *save_prefix)
int SaveNet (netPTR net, char *file_prefix)
int SaveSet (setPTR set, char *file_prefix)
int SetArtBeta (netPTR net, int component, float beta)
int SetArtVigil (netPTR net, int component, float vigil)
int SetBaseVigil (netPTR net, float base_vigil)
int SetMapVigil (netPTR net, float map_vigil)
int ShowPat (netPTR net, setPTR set, int pat_num)
int TrainSet (netPTR net, setPTR set, int max_epoch)
17. 8 Descripción de las funciones de THE ART GALLERY
AddPattern
Dado un apuntador a un conjunto de patrones y un patrón de datos, adiciona el patrón al conjunto.
Argumentos:
set - Apuntador al conjunto de patrones de tipo setTYPE
num_inputs - Número de patrones de entrada (integer)
*input - Apuntador a la lista de entradas num_inputs long (float)
num_outputs - Número de patrones de salida (integer)
*output - Apuntador a la lista de salidas num_outputs long (float)
Valores de Retorno:
0 - Finalizó exitosamente
1 - Cuando el tamaño de la entrada o salida es incompatible
2 - Cuando datos ANALOG fueron datos para tipos BINARY
3 - Cuando patrones de datos ANALOG no han sido redondeados correctamente [0 1]
4 - Cuando el vector de entrada o salida solo contenga valores de cero
5 - Cuando a ocurrido un error de memoria (sin memoria)
6 - Cuando set no ha sido inicializado o sea NULL
FreeNet
Dado un apuntador a una red, libera la memoria utilizada por la red y la señala como no inicializada.
Preacaución: Esto borra esencialmente la red.
Argumentos:
net - Apuntador a una red inicializada de tipo netTYPE
Valores de Retorno:
0 - Finalizo exitosamente
1 - Cuando la red no fue inicializada o sea NULL
FreeSet
Dado un apuntador a un conjunto, libera la memoria asignada al conjunto y señala el conjunto de
patrones como no inicializado.
Precaución: Esto borra el conjunto de patrones.
Argumentos:
set - Apuntador al conjunto de patrones de tipo setTYPE
Valores de Retorno:
0 - Finalizó exitosamente
1 - Cuando set no fue inicializada o sea NULL
GetArtBeta
Dado un apuntador a una red, a un componente de la red, y un apuntador a float, asigna el
apuntador a float al valor actual del indice recodificado del componente.
Argumentos:
net - Apuntador a una red inicializada de tipo netTYPE component - ART, ARTA, ARTB
beta - Apuntador a float
Valores de Retorno:
0 - Finalizó exitosamente
1 - Red no inicializada o NULL
18. 2 - Componente y tipo dado incompatible
3 - Tipo de componente dado invalido
GetArtResets
Dado un apuntador a una red, y a un componente, regresa el número de resets durante la última
época de entrenamiento para ese componente.
Argumentos:
net - Apuntador a una red inicializada de tipo netTYPE component - ART, ARTA, ARTB
Valores de Retorno:
Cuando finalizó exitozamente: El número de Resets
Cuando la red ni se inicializo: NULL o tipo de red invalido -1
GetArtSize
Dado un apuntador a una red, y a un tipo de componente, regresa el tamaño actual del
componente ART.
Argumentos:
net - Apuntador a una red inicializada de tipo netTYPE component - ART, ARTA, ARTB
Valores de Retorno:
Cuando finalizó exitozamente: El tamaño del componente ART
Cuando el tipo de red es incompatible: red sin inicializar o NULL -1
GetArtStyle
Dado un apuntador a una red, y a un componente, regresa el estilo del componente.
Argumentos:
net - Apuntador a una red inicializada de tipo netTYPE component - ART, ARTA, ARTB
Valores de Retorno:
NONE - Cuando el componente una entradas normales
COMPLIMENT- Cuando el componente usa compliment coding
-1 - Cuando no se inicializo, NULL o es un tipo de red invalido
GetArtType
Dado un apuntador a una red, y a un componente, regresa el tipo de componente.
Argumentos:
net - Apuntador a una red inicializada de tipo netTYPE component - ART, ARTA, ARTB
Valores de Retorno:
NONE - Cuando el componente es del tipo NONE
ART1 - Cuando el componente es del tipo ART1
FUZZYART - Cuando el componente es del tipo FUZZYART
-1 - Cuando no se inicializo, NULL o es un tipo de red invalido
GetArtVigil
Dado un apuntador a una red, un componente de red y un apuntador a float, asigna el apuntador a
float al valor del nivel de vigilancia del componente.
Argumentos:
net - Apuntador a una red inicializada de tipo netTYPE component - ART, ARTA, ARTB
vigil - Apuntador a float
Valores de retorno:
0 - Finalizó exitosamente
19. 1 - Red no inicializada o NULL
2 - Componente ARTMAP dado para el tipo de red ART
3 - Componente ART dado para el tipo de red ARTMAP
4 - Nombre de componente dado invalido
8 Referencias
Carpenter, G., Grossberg, S. (1987) "A Massively Parallel Architecture
For A Self-Organizing Neural Pattern Recognition Machine."
Computer Vision, Graphics, and Image Processing, 37, pp. 54-115.
Carpenter, G., Grossberg, S., & Reynolds, J. (1991) "ARTMAP: Supervised
Real-Time Learning and Classification of Nonstationary Date by a
Self-Organizing Neural Network." Neural Networks, 4, pp. 565-588.
Carpenter, G., Grossberg, S., & Rosen, D. (1991) "Fuzzy ART: Fast Stable
Learning and Categorization of Analog Patterns by an Adaptive
Resonance System." Neural Networks, 4, pp. 759-771.
Carpenter, G., Grossberg, S., Markuzon, N., Reynolds, J. & Rosen, D. (1992)
"Fuzzy ARTMAP: A Neural Network Architecture for Incremental
Supervised Learning of Analog Multidimensional Maps." IEEE
Transactions on Neural Networks, 5, pp. 698-713.