Documente Academic
Documente Profesional
Documente Cultură
INTELIGENCIA ARTIFICIAL
1 2 3 4 5
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0
0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 1 0
0 1 1 1 0 1 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
FELIZ TRISTE LLORON SERIO ALEGRE
2. Procedemos a binarisar los patrones. Los cuadrados de color negro sern 1 y los blancos 0.
Cada patrn nos dar un vector (de 30 bits) de 1 y 0, los cuales guardaremos un archivo txt
con el nombre PatronesEmoticon.txt, como referencia que son datos de entrada.
3. Ahora realizaremos una matriz identidad que sern los patrones que definirn los datos de
salida. Como tenemos 5 patrones, nuestra matriz identidad ser de 5 bits, siendo la primera
fila la salida que pertenece al emoticon FELIZ. Se guardar en un .txt con el nombre
SalidasDeseadas.txt.
Capa Entrada.
Capa Oculta.
Capa Salida.
Datos Entrada
Datos Salida.
Para empezar definiremos los patrones, para eso usaremos dos New File Input Layer: Uno para
datos de entrada(A) y el otro para salida(B):
5. Ahora colocaremos las propiedades que corresponden a cada File input: (1) Numero de bits,
(2)Ruta del archivo txt, (3)Nombre que lo identifique.
6. Para hacer los clculos de pesos utilizaremos una funcin simoidal, por lo cual tomaremos el
elemento New Simoid Layer. Se necesitarn 3, ya que tenemos 3 capas.
9. Como estamos realizando una red supervisada, entonces necesitamos un entrenador. Por lo
tanto tomaremos el elemento teacher, el cual recibir el simoidal de CapaSalida:
10. Ahora slo nos queda asociar nuestros datos de entrada (con la capa de entrada) y nuestros
datos de salida (con el teacher):
11. Ahora, slo nos queda hacer la inspeccin de que las bias y pesos estn. Eso se hace haciendo
clic derecho, inspect, y veremos los datos.
1. Como Se puede ver este ser la plantilla donde calcularemos los sigmoidal para cada capa
con los datos de BIAS y PESOS que se gener con ayuda del JOONE.
3. Comenzaremos a sumar cada tem y para el clculo del sigmoidal de cada capa emplearemos
la Formula =1/(1+EXP(-1*I11)) en la columna correspondiente los datos que obtendremos
son los siguientes.
4. Ya evaluado cada parmetros de datos tendremos las salidas neuronales las cuales
configuraremos para que se muestre un mensaje en la casilla verde correspondiente a la
entrada de datos que colamos en la matriz.
5. Ingresamos otro patrn en la matriz y la red neuronal calculara los datos para luego mandar
el mensaje correspondiente, en este caso el emoticon TRISTE.
4. Codificamos la informacin de las BIAS y los PESOS que darn paso a el clculo para la Red
Neuronal
import javax.swing.JOptionPane;
/**
*
* @author Ev
*/
public class Digitos {
int filas_entrada = 6;
int col_entrada = 5;
int neuronas_entrada = 30;
int neuronas_oculta = 6;
int neuronas_salida = 5;
int i, j, k;
mayor = sigmoidal_salida[i];
neurona_activada = i;
}
}
if (mayor > 0.8 ) { // heuristica para saber si el patron es coherente
switch (neurona_activada) {
case 0:
JOptionPane.showMessageDialog(null, "ESTOY FELIZ");break;
case 1:
JOptionPane.showMessageDialog(null, "ESTOY TRISTE");break;
case 2:
JOptionPane.showMessageDialog(null, "ESTOY LLORON");break;
case 3:
JOptionPane.showMessageDialog(null, "ESTOY SERIO");break;
case 4:
JOptionPane.showMessageDialog(null, "ESTOY ALEGRE");break;
}
} else
{ JOptionPane.showMessageDialog(null, "NO PASA NADA");}
package view;
import java.awt.Color;
import java.awt.Component;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import digitos.Digitos;
import javax.swing.JLabel;
/**
*
* @author Bryan
*/
public class frmDigito extends javax.swing.JFrame implements MouseListener{
/**
* Creates new form frmDigito
*/
public frmDigito() {
initComponents();
lb00.addMouseListener((MouseListener)this);
lb01.addMouseListener((MouseListener)this);
lb02.addMouseListener((MouseListener)this);
lb03.addMouseListener((MouseListener)this);
lb04.addMouseListener((MouseListener)this);
lb10.addMouseListener((MouseListener)this);
lb11.addMouseListener((MouseListener)this);
lb12.addMouseListener((MouseListener)this);
lb13.addMouseListener((MouseListener)this);
lb14.addMouseListener((MouseListener)this);
lb20.addMouseListener((MouseListener)this);
lb21.addMouseListener((MouseListener)this);
lb22.addMouseListener((MouseListener)this);
lb23.addMouseListener((MouseListener)this);
lb24.addMouseListener((MouseListener)this);
lb30.addMouseListener((MouseListener)this);
lb31.addMouseListener((MouseListener)this);
lb32.addMouseListener((MouseListener)this);
lb33.addMouseListener((MouseListener)this);
lb34.addMouseListener((MouseListener)this);
lb40.addMouseListener((MouseListener)this);
lb41.addMouseListener((MouseListener)this);
lb42.addMouseListener((MouseListener)this);
lb43.addMouseListener((MouseListener)this);
lb44.addMouseListener((MouseListener)this);
lb50.addMouseListener((MouseListener)this);
lb51.addMouseListener((MouseListener)this);
lb52.addMouseListener((MouseListener)this);
lb53.addMouseListener((MouseListener)this);
lb54.addMouseListener((MouseListener)this);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setMinimumSize(new java.awt.Dimension(174, 238));
setResizable(false);
lb53.setName("0"); // NOI18N
lb53.setOpaque(true);
lb53.setPreferredSize(new java.awt.Dimension(30, 30));
btnClean.setText("Limpiar");
btnClean.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCleanActionPerformed(evt);
}
});
pack();
}// </editor-fold>
@Override
public void mouseClicked(MouseEvent e) {
JLabel l = (JLabel)e.getSource();
if(l.getName().equals("0")){
l.setBackground(new Color(102,102,102));
l.setName("1");
}else{
l.setBackground(Color.white);
l.setName("0");
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(frmDigito.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(frmDigito.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(frmDigito.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(frmDigito.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
@Override
public void mousePressed(MouseEvent e) {
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void mouseReleased(MouseEvent e) {
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void mouseEntered(MouseEvent e) {
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void mouseExited(MouseEvent e) {
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}