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.