In [19]:
from itertools import product
from pprint import pprint
training_set = [
[[1, i1, i2], [i1 or i2]] # XOR
for i1, i2 in product([0, 1], [0, 1])]
pprint(training_set)
In [20]:
def learn(training_set=(), weights=(0., 0., 0.), learning_rate=0.5, activate=lambda x:x):
for inputs, outputs in training_set:
error = 0
for outp in outputs:
prediction = sum([activate(w * i) for i, w in zip(inputs, weights)])
error += outp - prediction
print(' error = {} - {} = {}'.format(outputs, prediction, error))
weights = [w + error * learning_rate for w in weights]
print('new weights = {}'.format(weights))
return weights
weights = learn(training_set)
In [23]:
weights = learn(training_set, weights)
weights = learn(training_set, weights)
In [24]:
def activate(i):
if i >= 0.5:
return 1
return 0
print(learn(training_set, activate=activate))
In [ ]:
In [ ]: