Advertisement
carmensrz

Fase 4

Oct 8th, 2012
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.31 KB | None | 0 0
  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. i = 1
  18. countErr=0
  19.  
  20. def inicio():
  21.  
  22.     global n
  23.     n = input("Dame el numero de entradas ")
  24.     for i in range(n):
  25.         x.insert(i,random.uniform(0,2)) #generar cadena de entradas binarias aleatorias
  26.         w.insert(i,random.uniform(-1.0,1.0))    #generar cadenas de pesos random
  27.  
  28.     x.append(-1)            #agregar al vector de entradas un -1 al final
  29.     print '\nVector de elementos de entrada generado \n', x[:]
  30.                                                                                                        
  31.     w.append(umbral)            #agregar al vector de pesos el umbral al final
  32.     print '\nVector de elementos de pesos generado \n', w[:]
  33.    
  34.     sumatoria()             #brincar a la funcion sumatoria
  35.  
  36.     return n
  37.  
  38. def sumatoria():
  39.    
  40.     global suma
  41.     suma=0
  42.     res=0
  43.    
  44.     res = x[i] * w[i]           #sumatoria del producto de elementos de entrada por elmentos del peso
  45.     suma = suma + res           #actualizar sumatoria
  46.                                                                                                          
  47.     #t = raw_input("\nSalida Esperada (0 o 1): ")   #pedir al usuario salida esperada
  48.     t = random.randint(0,1)     #generar solucion esperada aleatoria entre 0 y 1
  49.     #t = int(t)
  50.     print '\nLa salida aleatoria deseada es \n', t
  51.                                                                                                  
  52.     print '\nLa sumatoria de productos de entradas por pesos es:', suma #imprimir la sumatoria total del producto de entradas por pesos
  53.    
  54.     comparacion(t,n)            #brincar a la funcion comparacion
  55.    
  56.     return t
  57.  
  58. def comparacion(t,n):
  59.     global countErr
  60.     if(suma>=umbral):   #comparar suma con el umbral
  61.        
  62.         p=1     #suma mayor o igual a 1, salida obtenida = 1
  63.         print '\nLa salida obtenida = 1'
  64.    
  65.     else:
  66.                                                                    
  67.         p=0     #de lo contrario, salida obtenida = 0
  68.         print '\nLa salida obtenida = 0'
  69.        
  70.     i=1
  71.     if(t!=p):       #si la salida esperada difiere de la salida producida, se realiza un cambio en el vector de pesos
  72.  
  73.         countErr +=1        
  74.         wn[:]=[]
  75.         for i in range(n+1):
  76.             mult = alpha*(t-p)*x[i] #agregamos la tasa de aprendizaje alpha para modificar los pesos
  77.             wi.insert(i,w[i] + mult)
  78.             wn.insert(i,wi[i])      #agregamos a un vector nuevo los nuevos pesos
  79.         wn.append(umbral)       #agregamos el umbral al final del vector de pesos nuevo
  80.         w[:]=[]
  81.         for i in range(n+1):
  82.             w.insert(i,wn[i])
  83.        
  84.         print '\nVector de elementos de pesos nuevos generado es \n', wn[:] #imprimimos el vector nuevo de pesos
  85.        
  86.         sumatoria() #brincamos a la funcion sumatoria para volver a hacer calculas
  87.  
  88.        
  89.     else:
  90.        
  91.         print 'La salida esperada fue diferente que la obtenida', countErr, 'veces'            
  92.  
  93.     return countErr, w[:]
  94.  
  95. def main():
  96.     global x,n,w,wn,wi,umbral
  97.     inicio()
  98.  
  99.  
  100.  
  101.  
  102. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement