import numpy as np
alpha = 0.01
theta0 = 0.5
theta1 = 0.5
theta2 = 1
x1 = np.array([0, 0, 1, 1])
x2 = np.array([0, 1, 0, 1])
y = np.array([0, 0, 0, 1])
y2 = np.array([0,1,1,1])
def mysum(x1,x2):
return theta0+theta1*x1+theta2*x2
def activate(p,q):
if (mysum(p,q)>0):
return 1
else:
return 0
for i in range(1000):
theta0 = theta0-alpha*(mysum(x1[i%4],x2[i%4]) - y[i%4])
theta1 = theta1-alpha*(mysum(x1[i%4],x2[i%4])-y[i%4])*x1[i%4]
theta2 = theta2-alpha*(mysum(x1[i%4],x2[i%4])-y[i%4])*x2[i%4]
error0 = (mysum(x1[i%4],x2[i%4]) - y[i%4])
error1 = (mysum(x1[i%4],x2[i%4]) - y[i%4])*x1[i%4]
error2 = (mysum(x1[i%4],x2[i%4])-y[i%4])*x2[i%4]
while (abs(error0)<0.01 and abs(error1)<0.01 and abs(error2)<0.01):
print(error0,error1,error2)
实验结果: