Mostrando entradas con la etiqueta Inteligencia Artificial. Mostrar todas las entradas
Mostrando entradas con la etiqueta Inteligencia Artificial. Mostrar todas las entradas

Neurona en Python


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