Código de Java - Neurona artificial capaz de aprender

Imágen de perfil
Val: 492
Bronce
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Neurona artificial capaz de aprendergráfica de visualizaciones


Java

Publicado el 22 de Julio del 2017 por Rafael Angel (81 códigos)
23.944 visualizaciones desde el 22 de Julio del 2017
Una simple neurona artificial para desarrollar habilidades en este paradigma relacionado con la programación en paralelo.

Si sabes programar nodos, si sabes de redes entonces puedes crear o simular una red neuronal con esta neurona.

Requerimientos

Cualquier compilador, interprete de Java.

1.0
estrellaestrellaestrellaestrellaestrella(7)

Actualizado el 18 de Septiembre del 2017 (Publicado el 22 de Julio del 2017)gráfica de visualizaciones de la versión: 1.0
23.945 visualizaciones desde el 22 de Julio del 2017
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
//Neurona artificial basica.
//Autor Rafael Angel Montero Fernández.
//A ver como me sale, no soy super en esto de la inteligencia artificial. Pero me gusta el tema.
//Las entradas y salidas de la neurona sirven para conectar con otras neuronas y asi se forma una red neuronal artificial.
//Hay que ser bueno en logica para informaticos para avanzar en esta tecnologia.
//En lugar de un tipo de datos primitivo double se ha usado double porque es más estable con los numeros.
//No soy experto en esto, solo soy amante de este tema de la inteligencia artificial.
 
public class Neurona_artificial
{
   private double vPeso1, vPeso2, vPeso3;//Lo correcto es usar un vector o una matriz, ya que los pesos son las sinapsis de la neurona y una neurona puede tener N cantidad de sinapsis. Pero para este ejemplo y como aun no domino las matrices en Java, mejor algo basico.
   private double vTasa_de_aprendizaje;//Es el nivel de aprendizage de la neurona artificial.
   private double vUmbral_de_activacion;//El umbral o maximo o minimo nivel de activacion de la neurona al recivir algun estimulo.
 
   public Neurona_artificial(double nuevo_peso1,double  nuevo_peso2,double  nuevo_peso3)//Debo aclarar que el codigo original esta en c++ y yo estoy haciendo una traduccion y unas modificasiones a mi modo.
   {//En caso de usarse un vector para los pesos entonces, el parametro del cosntructor debe ser un vector llamado Vector mPesos.
 
      //Valores predefinidos para arrancar pero si conoces más de la tecnologia Neuroredes Artificiales puedes poner otros valores.
      this.vPeso1=nuevo_peso1;
      this.vPeso2=nuevo_peso2;
      this.vPeso3=nuevo_peso3;
 
      this.vUmbral_de_activacion=0;
      this.vTasa_de_aprendizaje=0.1;
   }//Fin del constructor.
 
 
 
   public int fSalida (double nueva_entrada1,double  nueva_entrada2,double  nueva_entrada3)//Por nomenclatura se ha usado la f para indicar que se trata de una funcion capaz de retornar datos.
   {
      double vSumatoria=  (nueva_entrada1 * this.vPeso1) + (nueva_entrada2 * this.vPeso2) +  (nueva_entrada3 * this.vPeso3);
 
      return (vSumatoria > this.vUmbral_de_activacion ? 1:0); //Esta linea a retornar es un if pero en modo nivel de maquina, un poco más efectivo que el if normal.
   }//Fin de fSalida
 
 
   //Funcion principal de esta neurona. Aunque cuando se quiere hacer una red, se conecta una primera fila con las entradas para el usuario y las filas secundarias tienen su entrada conectada con la salida de la primera fila, la neurona de salida tiene su salida libre para mostrar los datos en pantalla.
   public int fEntrenamiento_supervisado(double nueva_entrada1,double  nueva_entrada2,double  nueva_entrada3, int nueva_salida_deseada_por_el_usuario)//La salida deseada por el usuario, es un valor que el usuario o programador pone en modo ejecusion o cuando hace una instancia de la neurona, si la neurona lanza una salida igual a la deseada se dice que a aprendido y aprovado el entrenamiento.
   {//Las neuronas solo se programan una vez y cada vez que se quiera que realice una tarea diferente entonces se le entrena. La red si debe ser configurada de acuerdo a la tarea pero eso se puede definir para que sea realizable durante la ejecucion del programa.
      double vResultado = fSalida ( nueva_entrada1,  nueva_entrada2, nueva_entrada3);
      int vRespuesta=0;//Salida de la funcion.
 
      if (vResultado != nueva_salida_deseada_por_el_usuario)
      {
 
         if (vResultado > nueva_salida_deseada_por_el_usuario)
         {
            //Actualizacion de los pesos (Sinapsis)
            this.vPeso1 = this.vPeso1 - (this.vTasa_de_aprendizaje * nueva_entrada1);
            this.vPeso2= this.vPeso2 - (this.vTasa_de_aprendizaje * nueva_entrada2);
            this.vPeso3= this.vPeso3 - (this.vTasa_de_aprendizaje * nueva_entrada3);
            //--------------------------------------------------------
 
            //Actualizacion del umbral de activacion
            this.vUmbral_de_activacion +=  this.vTasa_de_aprendizaje;
 
         }//Fin del if >
         else
         {
            //Actualizacion de los pesos (Sinapsis)
            this.vPeso1 = this.vPeso1 + (this.vTasa_de_aprendizaje * nueva_entrada1);
            this.vPeso2= this.vPeso2 + (this.vTasa_de_aprendizaje * nueva_entrada2);
            this.vPeso3= this.vPeso3 + (this.vTasa_de_aprendizaje * nueva_entrada3);
            //--------------------------------------------------------  
            //Actualizacion del umbral de activacion
            this.vUmbral_de_activacion -=  this.vTasa_de_aprendizaje;
 
         }//Fin del else anidado >
 
         vRespuesta=1;//Neurona activada y respuesta positiva.
 
         }//Fin del if !=
         else
         {
            vRespuesta=0;//Neurona desactivada y respuesta negativa.
         }//Fin del else !=
 
      return vRespuesta;
   }//Fin de fEntrenamiento_supervisado
 
   public double getUmbral_de_activacion()
   {
      return this.vUmbral_de_activacion;
   }//Fin de getUmbral_de_activacion
 
   public double getTasa_de_aprendizaje()
   {
      return this.vTasa_de_aprendizaje;
   }//Fin de getTasa_de_aprendizaje
 
   public String getPesos()
   {
      /*
       * Se ha usado un String para retornar los tres valores de los pesos ceparados con
       * saltos de linea.
       * Pero en lugar del String para quienes dominen los vectores, va un vector.
       * Quedaría así:
       * public Vector getPesos(){...}
       */
      return "" +  this.vPeso1 + "\n" + this.vPeso2 + "\n" + this.vPeso3;
   }//Fin de getPesos
 
   //Conclusiones: Esta neurona artificial es parte de una red más grande con diferentes diseños de neuronas.
}//Fin del class



Comentarios sobre la versión: 1.0 (7)

Imágen de perfil
23 de Diciembre del 2017
estrellaestrellaestrellaestrellaestrella
Si muestrame el problema de investigacion universitario y si esta a mi alcanse te puedo ayudar.
Responder
manolo
30 de Diciembre del 2020
estrellaestrellaestrellaestrellaestrella
No ha dejado ningún comentario
Responder
gerardo
18 de Mayo del 2021
estrellaestrellaestrellaestrellaestrella
HOLA ESTA RED LA PUEDO APLICAR A UN CHABOT HECHO EN JAVA PARA QUE APRENDA DE LA PERSONA CUANDO INGRESA UNA PREGUNTA.-

GRACIAS.-
MUY BUENA TU PROGRAMACION
Responder
Jose
10 de Septiembre del 2019
estrellaestrellaestrellaestrellaestrella
Como puedo realizar un mapa de un lugar interior en java, es decir necesito localizar un carro en una universidad pero necesito localizarlo que debiera hacer.
Responder
Anonimo
17 de Septiembre del 2019
estrellaestrellaestrellaestrellaestrella
Thank you, for your dedication and
for sharing it, thank you very much.
Rafael Angel
Responder
luis
17 de Octubre del 2019
estrellaestrellaestrellaestrellaestrella
Estimado
Como podría crear una web parecido a https://es.khanacademy.org/
kisiera aplicar ahi la Intelegencia artificial.
Gracias
Saludos
Responder
alfonsobapa
16 de Enero del 2020
estrellaestrellaestrellaestrellaestrella
Codigo: https://codecanyon.net/item/academy-course-based-learning-management-system/22703468
Addons: https://codecanyon.net/item/academy-lms-certificate-addon/25515213
AndroidAPP: https://codecanyon.net/item/academy-lms-student-android-app/24833530


DEMO: http://demo.academy-lms.com/default/home/login


Download: https://prowebber.ru/internet/i-scripts/22732-academy-nulled-sistema-upravleniya-obucheniem-lms.html


Con eso lo puedes hacer...
Responder

Comentar la versión: 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s4080