finaly.append(y[index]) return finalx, finaly firstx, firsty = listfilter([0,1],x,y) # Train dan het eerste perceptron! We hebben hier te maken met twee trainingssets, # dus het probleem zou wel lineair op te lossen moeten zijn. percep = Perceptron([random.random() for i in range(4)], Step().activate) percep.update(firstx,firsty) # Uncomment voor uitgebreide informatie # print(percep.__str__()) print("End weights:") print(percep.getweights()) print("End bias:") print(percep.getbias()) # Train dan nu het tweede perceptron! Deze zou iets lastiger kunnen zijn, omdat we hier te maken # hebben met drie klasses; we werken immers met Step() die alleen maar 0 of 1 kan geven.... Bovendien # werken we in deze opdracht alleen maar met een enkele perceptron die getraind wordt. Als we een netwerk # zouden maken zou dit geen probleem geweest zijn; dan hadden we voor elke klasse een node in de output-layer # kunnen maken. percep2 = Perceptron([random.random() for j in range(4)], Step().activate) percep.update(x,y) # Uncomment voor uitgebreide informatie # print(percep.__str__())
# as to why it went wrong. Instead, we will print the outcomes and show that the XOR port is not working as it should. from classes.Perceptron import Perceptron from classes.Activation import Step import random random.seed(1756708) test1 = Perceptron([random.random() for x in range(2)], Step(0).activate) test1.update([[0, 0], [0, 1], [1, 0], [1, 1]], [0, 1, 1, 0]) # Uncomment voor uitgebreide informatie # print(test1.__str__()) print("End weights:") print(test1.getweights()) print("End bias:") print(test1.getbias()) print("Should be high (1):") print("Input [1,0] gives:") print(test1.activate([1, 0])) print("Input [0,1] gives:") print(test1.activate([0, 1])) print("") print("Should be low (0):") print("Input [0,0] gives:") print(test1.activate([0, 0])) print("Input [1,1] gives:") print(test1.activate([1, 1]))