import numpy as np
def andActivator(x): if x > 0: return 1 else: return 0
class ganzhiqi(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 = ganzhiqi(x) lr = 0.01
for i in range(1000):
f = g.forward()
b = g.backward(t, lr)
|