import numpy as np
import random
import math
w1 = np.random.random()
w2 = np.random.random()
x=np.array([[0,0],
[0,1],
[1,0],
[1,1]])
t=np.array([[0],
[0],
[0],
[1]])
w0=0
a = 0.01
eps = 1e-4
e0 = 0.01
e1 = 0.01
e2 = 0.01
while e0>=eps or e1>=eps or e2>=eps:
j=random.randint(0,3)
i=j
r=math.e**(-1)
k=w0+w1*x[i,0]+w2*x[i,1]
sig=1/(1+r**k)
e0 = (sig-t[i])*sig*(1-sig)
e1 = (sig-t[i])*sig*(1-sig)*x[i,0]
e2 = (sig-t[i])*sig*(1-sig)*x[i,1]
else:
w0 = w0-a*e0
w1 = w1-a*e1
w2 = w2-a*e2
print(w0,w1,w2)
[0.0007592] [0.11611411] [0.55373265]