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]])
t = np.matrix([[1], [0], [0],])
g = ganzhiqi(x)
lr = 0.01
for i in range(1000):
f = g.forward()
b = g.backward(t, lr)
|