Multi layer

Solo disponible en BuenasTareas
  • Páginas : 10 (2383 palabras )
  • Descarga(s) : 0
  • Publicado : 27 de mayo de 2011
Leer documento completo
Vista previa del texto
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Backpropagation {

public int k=0;

//Numero de neuronas a la entrada y la saldida de la red
int numEntradas, numSalidas;

// Numero de capas en la red
int numCapas;

// Numero de neuronas por capa
int numNeuronas_Capas [];
Matriz coefCompen [];

Matriz mPesos [];Matriz outCapa[] = new Matriz [numCapas+1];
Matriz delta_propa[] = new Matriz[numCapas+1];
JRadioButton jRadioButton1 = new JRadioButton();
JButton jButton1 = new JButton();

public Backpropagation(){
String aux = JOptionPane.showInputDialog(null,
"Ingrese el numero de elementos de entrada",
"",JOptionPane.DEFAULT_OPTION);

numEntradas = Integer.parseInt(aux);
aux =JOptionPane.showInputDialog(null,
"Ingrese el numero de capas de la red",
"",JOptionPane.DEFAULT_OPTION);

numCapas = Integer.parseInt(aux);

aux = JOptionPane.showInputDialog(null,
"Ingrese el numero de elementos a la salida",
"",JOptionPane.DEFAULT_OPTION);

numSalidas = Integer.parseInt(aux);

// Llena el vector con el nuemro de neuronas por capa
numNeuronas_Capas = new int[numCapas];
for (int i = 0 ; i< numCapas; i++){
aux = JOptionPane.showInputDialog(null,
"ingrese el nuemro de neuronas para la capa " + (i+1)
,"",
JOptionPane.DEFAULT_OPTION);
numNeuronas_Capas[i] = Integer.parseInt(aux);
}

// Matriz de coeficientes de activacion
coefCompen = new Matriz [numCapas+1];
for (int i= 0; i < numCapas; i++)
coefCompen[i] = new Matriz(numNeuronas_Capas[i],1,-1,1);
coefCompen[numCapas] =new Matriz(numSalidas,1,-1,1);

// Matriz de pesos aleatorios
mPesos = new Matriz [numCapas+1];
for (int i = 0; i < numCapas; i++){
if (i == 0)
mPesos[i] = new Matriz (numNeuronas_Capas[i],numEntradas,-3,3);
else
mPesos[i] = new Matriz(numNeuronas_Capas[i],numNeuronas_Capas[i-1],-3,3);
}
mPesos[numCapas] = new Matriz ( numSalidas, numNeuronas_Capas[numCapas-1],-3,3);

}

//Propagacion directa
public Matriz [] propagacionDirecta(Matriz entrada){
Matriz salidaCapa[] = new Matriz [numCapas+1];

int i;
salidaCapa[0] = ((mPesos[0].multiplica(entrada)).suma(coefCompen[0])).logsigActivacion();
for (i = 1 ; i 0.1)
//for (int k = 0; k < 100 ; k++)
{
for (int i = 0; i < P.length; i++){
e = (T[i].resta(simulacion(P[i]))).suma(e);
}
System.out.println(e.toString());
E =e.productoEscalarMatriz(1.0 / (double) P.length);
error2 = (E.trans()).multiplica(E);
errorDouble = error2.matrizDbl[0][0];
System.out.print(errorDouble + "\n");
this.propagacionInversa(E);
for (int i = 0; i < P.length; i++)
this.actuliazacionPesos(P[i],0.1);
k += 1;

VISOR IMG

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.JFrame;

/**
* Interfaz del visorde imágenes
*/
public class InterfazVisorImagen extends JFrame
{
//-----------------------------------------------------------------
// Constantes
//-----------------------------------------------------------------

/**
* Dimensión para la convolución
*/
public static final int DIMENSION_CONVOLUCION = 3;

//-----------------------------------------------------------------
//Atributos
//-----------------------------------------------------------------

/**
* Panel de la imagen
*/
private PanelImagen panelImagen;

/**
* Panel de los botones
*/
private PanelBotones panelBotones;

/**
* Diálogo para pedir la matriz de convolución
*/
private DialogoMatrizConvolucion dialogoMatriz;

/**
* Diálogo para pedir el umbral de binarización
*/
privateDialogoUmbralBinarizacion dialogoUmbral;

//-----------------------------------------------------------------
// Constructores
//-----------------------------------------------------------------

/**
* Crea la interfaz para el visor de imágenes
*/
public InterfazVisorImagen( )
{
//Establece el distribuidor gráfico
setLayout( new BorderLayout( ) );

//Crea y adiciona el panel de la imagen...
tracking img