comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Neurona en python

  • 1 Respuestas
  • 2783 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5401
  • Actividad:
    36.67%
  • Reputación 31
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« en: Julio 15, 2014, 10:40:23 pm »

Bueno este es programa puede ser usado para que aprenda las compuertas logicas or y and y otras cuantas cosillas que le indiquemos que sean linealmente separables dado que es una sola neurona.

se lleva a cabo de la siguiente manera:

1.-primero te pide la cantidad de entradas y el factor de aprendizaje que podria ser por ejemplo : 0.5

2.- despues se generan los pesos aleatoriamente.

3.- despues se pide que ingrese cada una de las entradas las cuales deben ser 1 o -1(0) y la salida deseada igual 1 o -1(0).

4.- despues se hace una sumatoria de la multiplicacion de cada entrada por cada peso, si el resultado de la sumatoria es mayor o igual a cero la salida correspodiente sera : 1 en caso de que sea menor a cero la salida sera: -1(0) .

5.- por ultimo se verifica que la salida obtenida sea igual a la salida deseada en caso contrario se vuelven a calcular los pesos y se vuleve a probar con las mismas entradas hasta que la salida obtenida sea igual a la salida deseada.

y es de esta forma como este programa puede ser capaz de aprender las compuertas logicas or y and.

Código: Python
  1.     import random
  2.      
  3.     class neurona(object):
  4.       def __init__(self,cantidadEntradas=0,factorAprendizaje=0):
  5.         self.factorAprendizaje=factorAprendizaje
  6.         self.cantidadEntradas=cantidadEntradas
  7.              
  8.       def inicializaPesos(self):
  9.         pesos=[]
  10.         for x in range(self.cantidadEntradas):
  11.           pesos.append(random.uniform(0,1))
  12.         pesos.append(random.uniform(0,1))
  13.         print "Pesos Iniciales:\n",pesos    
  14.         self.obtenerEntradas(pesos)
  15.        
  16.       def obtenerEntradas(self,pesos):
  17.         entradas=[]
  18.         salida=0
  19.        
  20.         while True:
  21.           opcion=raw_input("Desea continuar si o no: ")
  22.           if opcion=="no":
  23.             break
  24.           print "\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  25.           for x in range(self.cantidadEntradas):            
  26.             entradas.append(int(raw_input("Ingrese la entrada: ")))
  27.           entradas.append(-1)
  28.           salidaDeseada=int(raw_input("Ingresa la salida deseada: "))
  29.           sumatoria = self.funcionActivacion(entradas,pesos)
  30.           if sumatoria>=0:
  31.             salida=1
  32.           elif sumatoria<0:
  33.             salida=-1
  34.           if salidaDeseada-salida!=0:
  35.             print "Salida Obtenida: ",salida
  36.             print "Pesos Nuevos:\n"
  37.             for i,x in enumerate(pesos):
  38.               pesos[i]=pesos[i] +  (2.0 * self.factorAprendizaje) * (salidaDeseada * entradas[i])
  39.             print pesos
  40.             self.obtenerEntradas(pesos)
  41.           else:
  42.             print "Salida Obtenida: ",salida
  43.             entradas=[]
  44.          
  45.       def funcionActivacion(self,entradas,pesos):
  46.         sumatoria=0
  47.         for i,entrada in enumerate(entradas):
  48.           sumatoria=sumatoria+(entradas[i]*pesos[i])
  49.         return sumatoria
  50.        
  51.     def main():
  52.       factorAprendizaje=raw_input("Ingresa el factor de aprendizaje: ")
  53.       cantidadEntradas=raw_input("Cuantas seran las entradas: ")
  54.       neurona1=neurona(int(cantidadEntradas),float(factorAprendizaje))
  55.       pesos=neurona1.inicializaPesos()
  56.          
  57.     main()

Autor: Marco Samperio
« Última modificación: Julio 16, 2014, 12:58:17 pm por blackdrake »


Desconectado Yavi

  • *
  • Underc0der
  • Mensajes: 169
  • Actividad:
    0%
  • Reputación 0
  • Es como una pagina redirigiendose a si misma
    • Ver Perfil
    • Email
  • Skype: yavios@hotmail.com
  • Twitter: @YaviOS64
« Respuesta #1 en: Abril 30, 2015, 11:09:31 pm »
Wow, interesante. Me acuerdo que el año pasado (2014) me la pase investigando todo sobre esto. ...y ahora en underc0de? increible!
Buen Post  :D ;)
"Eso es lo bueno de internet. De que sirve internet si chateas con tus vecinos??? para eso te sacas unas sillas al fresco y hablais y jugais a las cartas". @windux

 

¿Te gustó el post? COMPARTILO!



[Código] Yardas a metros - Metros a yardas [Python]

Iniciado por LucaSthefano

Respuestas: 0
Vistas: 1421
Último mensaje Mayo 29, 2011, 01:27:34 am
por LucaSthefano
Python Trojan - By "bLiNdFiR3"

Iniciado por d33k40

Respuestas: 1
Vistas: 2114
Último mensaje Abril 03, 2010, 11:01:59 pm
por Dharok
Python keylogger - by "bLiNdFiR3"

Iniciado por d33k40

Respuestas: 0
Vistas: 2061
Último mensaje Abril 07, 2010, 03:30:22 am
por d33k40
Python phpmyadmin "BruteForce"

Iniciado por linkgl

Respuestas: 2
Vistas: 2550
Último mensaje Agosto 19, 2011, 12:14:37 pm
por linkgl
[Código] Entero / No Entero [Ejercicio - Python]

Iniciado por LucaSthefano

Respuestas: 0
Vistas: 1390
Último mensaje Mayo 29, 2011, 01:24:09 am
por LucaSthefano