import numpy as np import random import math from functools import reduce class Perceptron(object): ? ? w = np.array([[1],[1]]) ? ? x = np.array([[1, 1], [0, 0], [1, 0], [0, 1]]) ? ? t = [1,0,0,0] ? ? x1 = np.array(x[:,0]) ? ? x2 = np.array(x[:,1]) ? ? e0 = 9 ? ? e1 = 9 ? ? eps = 1e-4 ? ? abc = 0
? ? def __init__(self): ? ? ? ? self.eps = 1e-4 ? ? ? ? self.a = 0.01
? ? def plus(x, y): ? ? ? ? a = list(map(lambda x: x*y,x)) ? ? ? ? c = np.sum(a) ? ? ? ? return c ? ? def f(x): ? ? ? ? return 1.0 / (1 + np.exp(-x)) ? ? for abc in range(1000): ? ? ? ? i=0 ? ? ? ? w1 = w[0] ? ? ? ? w2 = w[1] ? ? ? ? for i in range(0,4): ? ? ? ? ? ? i = random.randint(0, 3) ? ? ? ? ? ? e0 = np.sum(2*(f(plus(w1,x1[i])-t[i])*(f(1-f(plus(w1,x1))))*x1)) ? ? ? ? ? ? e1 = np.sum(2*(f(plus(w2,x2[i])-t[i])*(f(1-f(plus(w2,x2))))*x2)) ? ? ? ? ? ? w1 = w1-0.1*e0 ? ? ? ? ? ? w2 = w2-0.1*e1 ? ? ? ? abc=abc+1
?if __name__ == '__main__': ? ? ? ? print(w1,w2 )
|