document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #!/usr/bin/python
  2.                                                                                                                                            
  3. import random
  4.  
  5. x=[]
  6. w=[]    #pesos
  7. wn=[]   #pesos nuevos
  8. wi=[]       #pesos nuevos insertados
  9. alpha = 0.05
  10. umbral = 0.5
  11. t = 0
  12. p = 0
  13. res = 0
  14. res2 = 0
  15. suma = 0
  16. mult = 0
  17. cont = 0
  18. i = 1
  19.  
  20. def main():    
  21.                                                                                                                                      
  22.     global x,w,wn,wi,umbral
  23.                                                                                                                                    
  24.  
  25.  
  26. def inicio():
  27.    
  28.     global x
  29.  
  30.     for i in range(10):
  31.  
  32.         x.insert(i,random.uniform(0.0,1.0)) #generar cadena de entradas binarias aleatorias
  33.                                                                                                                            
  34.         w.insert(i,random.uniform(-1.0,1.0))    #generar cadenas de pesos random
  35.                                                                                                                                                                                                                            
  36.     x.append(-1)            #agregar al vector de entradas un -1 al final
  37.     print \'\\nVector de elementos de entrada introducido \\n\', x[:]
  38.                                                                                                        
  39.     w.append(umbral)            #agregar al vector de pesos el umbral al final
  40.     print \'\\nVector de elementos de pesos generado \\n\', w[:]
  41.    
  42.     sumatoria()             #brincar a la funcion sumatoria
  43.  
  44. def sumatoria():
  45.     global x
  46.     global suma
  47.     suma=0
  48.     res=0
  49.    
  50.     res = x[i] * w[i]           #sumatoria del producto de elementos de entrada por elmentos del peso
  51.                                                                                                        
  52.     suma = suma + res           #actualizar sumatoria
  53.                                                                                                          
  54.     t = raw_input("\\nSalida Esperada (0 o 1): ")    #pedir al usuario salida esperada
  55.     t = int(t)
  56.                                                                                                  
  57.     print \'\\nLa sumatoria de productos de entradas por pesos es:\', suma #imprimir la sumatoria total del producto de entradas por pesos
  58.    
  59.     comparacion(t)          #brincar a la funcion comparacion
  60.    
  61.     return t
  62.  
  63. def comparacion(t):
  64.    
  65.     global cont
  66.                                                                                                                        
  67.     if(suma>=umbral):   #comparar suma con el umbral
  68.                                                                                    
  69.         p=1     #suma mayor o igual a 1, salida obtenida = 1
  70.         print \'\\nLa salida obtenida = 1\'
  71.    
  72.     else:
  73.                                                                    
  74.         p=0     #de lo contrario, salida obtenida = 0
  75.         print \'\\nLa salida obtenida = 0\'
  76.  
  77.    
  78.    
  79.     i=1
  80.     if(t!=p):       #si la salida esperada difiere de la salida producida, se realiza un cambio en el vector de pesos
  81.         wn[:]=[]
  82.  
  83.         for i in range(11):
  84.            
  85.             mult = alpha*(t-p)*x[i] #agregamos la tasa de aprendizaje alpha para modificar los pesos
  86.             wi.insert(i,w[i] + mult)
  87.             wn.insert(i,wi[i])      #agregamos a un vector nuevo los nuevos pesos
  88.         wn.append(umbral)       #agregamos el umbral al final del vector de pesos nuevo
  89.         w[:]=[]
  90.         for i in range(11):
  91.             w.insert(i,wn[i])
  92.          
  93.         print \'\\nVector de elementos de pesos nuevos generado es \\n\', wn[:] #imprimimos el vector nuevo de pesos
  94.         sumatoria() #brincamos a la funcion sumatoria para volver a hacer calculas
  95.          
  96.     return w[:]
  97.        
  98.      
  99. def main():        
  100.     inicio()   
  101.  
  102. main()
');