class Rneuronal(object):
def __init__(self, peso=None, umbral=0.5):
self.umbral = umbral
self.peso = peso
self.verbose = False
def salidas(self, vector1):
if self.total(vector1) < self.umbral:
return 0
else:
return 1
def entrenador(self, entrenar, alpha=0.1, despues=100):
if self.peso is None:
self.peso = [0 for _ in range(len(entrenar.keys()[0]))]
n = 0
actua = True
while(actua):
n += 1
actua = False
for xy, a in entrenar.items():
y = self.salidas(xy)
if(y != a):
self.Apeso(alpha, a, y, xy)
self.A_umbral(alpha, a, y)
actua = True
if despues is not None and n >= despues:
break
return n
def prueba(self, entrenar):
for xy, a in entrenar.items():
if(self.salidas(xy) != a):
return False
return True
def total(self,vector1):
total = 0
for y,x in zip(self.peso, vector1):
total += (y * x)
return total
def Apeso(self, alfa, a, y, xy):
for i in range(len(self.peso)):
self.peso[i] = (alfa * (a - y) * xy[i]) + self.peso[i]
def A_umbral(self, alfa, a, y):
self.umbral = (alfa * (a - y) * -1) + self.umbral
negacion= {
(0,0): 1,
(0,1): 1,
(1,0): 1,
(1,1): 0
}