domingo, 26 de julio de 2015

RNA - Aprender si un cuadrado es par

Definiremos los cuadrados impares, y definiremos a la cantidad impar con el valor de " 0 ".
Solo será par cuando dos casillas estén pintadas y tendrá el valor de " 1 ". No estarán definidas el cuadro sin pintar ni el cuadro con todas las casillas pintadas.


Cada nodo posee un vector de entradas(en este caso son 5 para la capa J y 3 para la capa K), y cada entrada tiene un peso("inicialmente aleatorios") y un función de activación(en este ejemplo sera la funcion sigmoidal).

También para cada nodo tendremos un error , utilizaremos el entrenamiento Backpropagation .






Construimos la clase nodo("neuron1")

package parimparrn;

public class Neuron1 {
    private double activacionu;
 double [] entradas;
 double [] pesos;
 double errorNodo;
 static Sigmoide sigmoide;
        public Neuron1(int nentradas)
 {
  pesos = new double[nentradas];
  entradas = new double[nentradas];
  sigmoide = new Sigmoide();
  errorNodo = 0;
 }
 public void activacion()
 {
  double suma = 0;
  for(int i=0;i<entradas.length;i++)
  {
   suma =suma + entradas[i]*pesos[i];
  }
  activacionu = sigmoide.funcion(suma);
 }

    public double[] getEntradas() {
        return entradas;
    }

    public void setEntradas(double[] entradas) {
        this.entradas = entradas;
    }

    public double[] getPesos() {
        return pesos;
    }

    public void setPesos(double[] pesos) {
        this.pesos = pesos;
    }
 public void verEntradas()
 {
  System.out.print(" entradas  ");
  for(int i=0;i<entradas.length;i++)
  {
   System.out.println(entradas[i]);
  }
 }
 public void verPesos()
 {
  System.out.println(" *** pesos ** ");
  for(int i=0;i<pesos.length;i++)
  {
   System.out.println(""+pesos[i]);
  }
 }
 public double getActivacion()
 {
  return activacionu;
 }
 public void verActivacion()
 {
  System.out.println("activacion");
  System.out.println(""+activacionu);
 }
 public double getError()
 {
  return errorNodo;
 }
 public void setError(double error)
 {
  errorNodo=error;
 }
        
}
Adjunto el proyecto , el archivo con frame , utiliza los pesos aprendidos tras ejecutar el método run de la clase TestRN.En  el proyecto sin frame se ejecuta el método y se encuentra los pesos para la red.
Descargar Proyecto completo con frame
Descargar Proyecto completo sin frame
Descargar  plantillas de RNA

No hay comentarios.:

Publicar un comentario