Multi layer
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...
Regístrate para leer el documento completo.