Esta vez y siguiendo el ejemplo anterior, lo mismo pero con puerta lógica AND. Solo hace falta substituir los valores de la tabla de verdad del anterior ejemplo por las de la siguiente tabla:
Codigo:
//Aprendizaje puerta logica AND
package neurona4;
import java.util.Random;
import java.util.Scanner;
public class Neurona4 {
public static void main(String[] args) {
//Tabla de la verdad puerta AND (X1,X2,Y1)
int[][] tv = {{1, 1, 1}, {1, -1, -1}, {-1, 1, -1}, {-1, -1, -1}};
double w1 = new Random().nextDouble();
double w2 = new Random().nextDouble();
double θ = -0.4;
double y = 0;
final double E = 0.6;//Factor de aprendizaje
System.out.println("Iniciando fase de aprendizaje puerta logica AND...");
int i = 0;
int cont = 1;
while (i < tv.length && cont < 10000) {
y = Math.tanh((tv[i][0] * w1) + (tv[i][1] * w2) + (-1 * θ));
y = (y >= θ) ? 1 : -1;
if (y == tv[i][2]) {
i++;
} else {
//Ajuste de pesos
w1 = w1 + 2 * E * tv[i][2] * tv[i][0];
w2 = w2 + 2 * E * tv[i][2] * tv[i][1];
θ = θ + 2 * E * tv[i][2] * (-1);
cont++;
i = 0;
}
}
if (cont <= 9999) {
System.out.println("Fase de aprendizaje terminado con exito ");
System.out.println("\nIntroduce Entrada 1 (X1): ");
Scanner leerX1 = new Scanner(System.in);
double x1 = Double.parseDouble(leerX1.next());
System.out.println("Introduce Entrada 2 (X2): ");
Scanner leerX2 = new Scanner(System.in);
double x2 = Double.parseDouble(leerX2.next());
y = Math.tanh((x1 * w1) + (x2 * w2) + (-1 * θ));
y = (y >= θ) ? 1 : -1;
System.out.println("\nSalida: " + y);
} else {
System.out.println("\nFase de aprendizaje ha fallado\n");
}
}
}
Resultado:
run:
Iniciando fase de aprendizaje puerta logica AND...
Fase de aprendizaje terminado con exito
Introduce Entrada 1 (X1):
-1
Introduce Entrada 2 (X2):
1
Salida: -1.0
BUILD SUCCESSFUL (total time: 2 seconds)
Una forma sencilla y rápida de aprender JAVA, observando y deduciendo cómo se comporta el lenguaje a través de ejemplos prácticos.
Archivo del blog
-
►
2012
(38)
- ► septiembre (3)
-
▼
2014
(34)
-
▼
febrero
(7)
- Neurona Artificial (I). Perceptrón Simple.
- Neurona Artificial (II). Aprendizaje (puerta lógic...
- Neurona artificial (III). Aprendizaje (puerta lógi...
- Neurona artificial (IV). Perceptrón Multicapa.
- Operaciones matemáticas. Sumatorio.
- Operaciones matemáticas. Multiplicación de un vect...
- Neurona Artificial (V). Puerta lógica XOR.
-
▼
febrero
(7)
-
►
2020
(12)
- ► septiembre (1)
Suscribirse a:
Enviar comentarios (Atom)
Con la tecnología de Blogger.
No entiendo porque pones dos teclados, pero te agradezco inmensamente por compartir estos conocimientos. Me ha servido de mucho. Saludos.
ResponderEliminarun genio , Muchas gracias !!!!
ResponderEliminar