SHARE
TWEET

rnaB.py

richigarza Nov 6th, 2012 65 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class Rneuronal(object):
  2.  
  3.     def __init__(self, peso=None, umbral=0.5):
  4.         self.umbral = umbral
  5.         self.peso = peso
  6.         self.verbose = False
  7.  
  8.     def salidas(self, vector1):
  9.         if self.total(vector1) < self.umbral:
  10.             return 0
  11.         else:
  12.             return 1
  13.  
  14.     def entrenador(self, entrenar, alpha=0.1, despues=100):
  15.         if self.peso is None:
  16.             self.peso = [0 for _ in range(len(entrenar.keys()[0]))]
  17.         n = 0
  18.         actua = True
  19.         while(actua):
  20.             n += 1
  21.             actua = False
  22.             for xy, a in entrenar.items():
  23.                 y = self.salidas(xy)
  24.                 if(y != a):
  25.                     self.Apeso(alpha, a, y, xy)
  26.                     self.A_umbral(alpha, a, y)
  27.                     actua = True
  28.             if despues is not None and n >= despues:
  29.                 break
  30.         return n
  31.  
  32.     def prueba(self, entrenar):
  33.         for xy, a in entrenar.items():
  34.             if(self.salidas(xy) != a):
  35.                 return False
  36.         return True
  37.  
  38.     def total(self,vector1):
  39.         total = 0
  40.         for y,x in zip(self.peso, vector1):
  41.             total += (y * x)
  42.         return total
  43.  
  44.     def Apeso(self, alfa, a, y, xy):
  45.         for i in range(len(self.peso)):
  46.             self.peso[i] = (alfa * (a - y) * xy[i]) + self.peso[i]
  47.  
  48.     def A_umbral(self, alfa, a, y):
  49.         self.umbral = (alfa * (a - y) * -1) + self.umbral
  50. negacion= {
  51.   (0,0): 1,
  52.   (0,1): 1,
  53.   (1,0): 1,
  54.   (1,1): 0
  55.   }
RAW Paste Data
Top