Redes Neuronales en java, Herramienta para redes Neuronales
Neural Networks tool Neural Networks with java Neural Networks tool
Neural Networks tool Neural Networks with java
       
 

 

Introducción
a las Redes Neuronales
API del
Marco de trabajo
Tutorial
Marco de
Trabajo
JRedesNeruonales
Downloads
Hompage
Marco de
trabajo

 


Tutorial para el diseño de una Red Neuronal
2. El diseño de la arquitectura

El diseño de la arquitectura de la capa se hace implementado la función constructora de la red_hija en las cuales podemos poner el número de parámetros que deseemos como en los siguientes ejemplos:

public Perceptron_Red()
public Perceptron_Red(int nneuronas1 ,int nneuronas2 )

Hay dos modos de realizar estas funciones dependiendo de los métodos que usemos y la precision que necesite nuestra red.


 

1 ) Modo Rápido:

La idea es diseñar cada capa con las funciones , digamos macroscópicas , esto es , aquellas que manejan a todas las neuronas y sinapsis de las capas.Por ejemplo, llamando a una función, crear la capa y todas sus neuronas y con otra unimos las capas con un determinado tipo de unión ya sea lineal(una neurona de cada capa con otra de cada capa) o total (esto es, Cada neurona esta unida a todas las Neuronas de las otras capas mediante sinapsis).

Esto permite una mayor rapidez en el diseño ya que con pocas líneas realizamos todo el diseño de la arquitectura de la red.
Tenemos dos opciones la primera es usar la funciones de la red

public void crearCapaEntrada(int NNeuronas, String Tipo_Neuronas)
public void crearCapaSalida(int NNeuronas, String tipoNeurona,int NMaxCapas)
public void crearCapaOculta(int NNeuronas, String tipoNeurona)

NNeuronas es el número de neuronas que tendrá la capa.
NMaxCapas es el número máximo de capas.
tipo_Neuronas es el tipo de la clase que representa a las neuronas de
nuestra red.

La segunda opción es usar los constructores de la Capa y aplicarlos sobre las
relaciones de la red CapaEntrada y CapaSalida.

public Capa(int Numero_Neuronas, int orden_de_la_Capa, String tipo_Neuronas)
donde
Numero_Neuronas es el número de neuronas que tendrá la capa.
orden_de_la_Capa es el orden de la capa que representa su
ordenación frente a las otras capas CapaEntrada tiene
orden 0 y CapaSalida tiene el mayor orden.

tipo_Neuronas es el tipo de la clase que representa a las neuronas de
nuestra red

Para unir capas usaremos este método de la red.

public int unirCapas(Capa Capa1, Capa Capa2, int tipo_union, String ClaseSinapsis)
donde

Capa1,Capa2 Se unen estas dos capas.

tipo_union Es el tipo de unión que tendrán las neuronas : Lineal o
Total ( se debe poner una de estas literalmente ya que
son constantes.)

tipo_Neuronas es el tipo de la clase que representa a las Sinapsis con
que se unirán las neuronas de cada Capa de nuestra red.

Un Ejemplo para crear un perceptrón podría ser el siguiente código:

public Perceptron_Red(int nneuronas1 ,int nneuronas2 ) {
//Creo La capa de entrada y salida
CapaEntrada = new Capa(nneuronas1,0,"Neurona_Bipolar");
CapaSalida = new Capa(nneuronas2,2,"Neurona_Bipolar");

//Uno La capa de entrada y salida de forma total con
//sinapsis_perceptron que la definiremos después
unirCapas(CapaEntrada,CapaSalida,Total,"Sinapsis_Perceptron");
}

Este modo de diseñar redes tiene la ventaja de que es muy rápido en apenas tres líneas de código ya hemos diseñado la red, pero tiene la desventaja de que tiene restricciones :
- Las Neuronas de una capa tienen que ser todas iguales( de la misma clase).
- Las Sinapsis que unen una capa con otra capa tienen que ser todas iguales.
- Solo podemos unir las Capas de dos maneras Linealmente o Totalmente no hay otras opciones.

Con los métodos anteriores podemos tener casi todas las redes cubiertas pero existen algunas redes que necesitan mas flexibilidad, por ejemplo aquellas cuya arquitectura se genera dinámicamente como las redes ART.

Para modelar este tipo de redes se le añaden al modelo una serie de métodos que pretenden añadir la flexibilidad necesaria.

 


2 ) Modo Flexible:

Algunas redes neuronales necesitan mas flexibilidad que la que proveen los anteriores métodos. Estos métodos manejan las neuronas una a una, así como las sinapsis

Estas funciones son :

Para crear neuronas dinámicamente en la red usaremos estos métodos.
La diferencia entre ellos es que uno define el estado y la Salida deseado y el otro deja indefinidos a estos valores.

public void addNeurona(int ordenC,String TipoN,double Estado, double Sal_Deseada)
public void addNeurona(int ordenCapa,String TipoNeurona)

int ordenC es el orden de la capa en la que crearemos la neurona.

String TipoN es el nombre de la clase a la que pertenecerá la neurona.

double Estado es el estado que tendrá la neurona

double Sal_Deseada es la salida deseada que tendrá la neurona.

Para unir neuronas usamos este método de la clase red.

public void unirNeuronas(int ordenCapaOrigen,int idNeuronaOrigen, int ordenCapafin ,
int idNeuronafin, String ClaseSinapsis)

ordenCapaOrigen es el orden de la capa en la que esta la neurona desde
la que sale la sinapsis.

idNeuronaOrigen es el identificador de la neurona desde la que sale la
sinapsis

ordenCapaDestino es el orden de la capa en la que esta la neurona a
la que llega la sinapsis

idNeuronaDestino es el identificador de la neurona a la que llega la
sinapsis

ClaseSinapsis es el nombre de la clase a la que pertenecerá la sinapsis.

Para unir una neurona a todas las neuronas de una capa usamos este método de la clase capa.

public void unirCapaNeurona(int ordenCapa,int idNeurona, int ordenCapaNeurona , String ClaseSinapsis)

ordenCapa es el orden de la capa en la que esta la neurona desde
la que salen la sinapsis.

ordenCapaDestino es el orden de la capa en la que esta la neurona desde
la que sale la sinapsis

idNeuronaDestino es el identificador de la neurona a la que llegarán la
sinapsis.

ClaseSinapsis es el nombre de la clase a la que pertenecerá la sinapsis.

 
 

 

Seguir en el siguiente apartado >

Introducción - Diseño de la arquitectura - Diseño del Comportamiento
Diseño de la Dinámica de la red - Diseño del Aprendizaje de la red
Las redes Online - Diseño de los patrones - Empaquetado de la red.

 

This Software has been developed by Alfonso Ballesteros Computering Ingenieer by the University of Malaga, Spain as a part of his final
degree proyect with the supervision of D. Enrique Dominguez