import numpy as np
def andActivator(x):
if x > 0:
return 1
else:
return 0
class ganzhiji(object):
def init(self, x):
self.x = x
self.w = np.random.rand(2, 1)
self.b = np.random.rand(1, 1)
def forward(self):
self.y = np.zeros((4, 1))
for i in range(self.x.shape[0]):
self.y[i] = andActivator(np.sum(self.x[i] * self.w + self.b))
def backward(self, t, lr):
delta = np.zeros((4, 1))
loss = 0 for i in range(self.x.shape[0]): delta[i] = (self.y)[i] - t[i] ''' a=delta[i] b=self.y[i] c=t[i] a=b-c ''' loss -= delta[i] gradient_b = delta[i] self.b -= lr * gradient_b gradient_w = self.x[i].T * gradient_b self.w -= lr * gradient_w print(loss) print(self.w) print(self.b)
if name == ‘main’:
x = np.matrix([[1, 1],
[1, 0],
[0, 1],
[0, 0]])
t = np.matrix([[1],
[0],
[0],
[0]])
g = ganzhiji(x)
lr = 0.01
for i in range(1000): f = g.forward() b = g.backward(t, lr)