import numpy as np
import random
import math
class GateNeuron:
def __init__(self):
self.w = np.array([0.0, 0.0]) # weight of one input
self.b = np.array([0.0]) # bias
print("Initial w: {0}, b: {1}".format(self.w, self.b))
def u(self, x):
return np.dot(self.w, x) + self.b
def f(self, u):
return max(0.0, u)
def z(self, x):
u = self.u(x)
return self.f(u)
def squared_error(self, x, z_target):
return 1.0 / 2.0 * math.pow(self.z(x) - z_target, 2)
def numerical_f_derivative(self, u):
delta = 1e-4 # 0.0001
return (self.f(u + delta) - self.f(u - delta)) / (2 * delta)
def d_E_over_d_w(self, input, z_target):
u = self.u(input)
z = self.f(u)
error = z - z_target
return error * self.numerical_f_derivative(u) * input
def d_E_over_d_b(self, input, z_target):
u = self.u(input)
z = self.f(u)
error = z - z_target
return error * self.numerical_f_derivative(u)
def learning(self, alpha, maxEpoch, data):
for i in range(maxEpoch):
for idx in range(data.numTrainData):
x = data.training_input_value[idx]
z_target = data.training_z_target[idx]
self.w = self.w - alpha * self.d_E_over_d_w(input, z_target)
self.b = self.b - alpha * self.d_E_over_d_b(input, z_target)
sum = 0.0
for idx in range(data.numTrainData):
sum = sum + self.squared_error(data.training_input_value[idx], data.training_z_target[idx])
print("Epoch {0}: Error: {1}, w: {2}, b: {3}".format(i, sum / data.numTrainData, self.w, self.b))
class Data:
def __init__(self):
self.training_input_value = np.array([(0.0, 0.0), (1.0, 0.0), (0.0, 1.0), (1.0, 1.0)])
self.training_z_target = np.array([0.0, 0.0, 0.0, 1.0])
self.numTrainData = len(self.training_input_value)
if __name__ == '__main__':
n = GateNeuron()
d = Data()
for idx in range(d.numTrainData):
input = d.training_input_value[idx]
z = n.z(input)
z_target = d.training_z_target[idx]
error = n.squared_error(input, z_target)
print("x: {0}, z: {1}, z_target: {2}, error: {3}".format(input, n.z(input), z_target, error))
n.learning(0.1, 100, d)
for idx in range(d.numTrainData):
input = d.training_input_value[idx]
z = n.z(input)
z_target = d.training_z_target[idx]
error = n.squared_error(input, z_target)
print("x: {0}, z: {1}, z_target: {2}, error: {3}".format(input, n.z(input), z_target, error))
Initial w: [ 0. 0.], b: [ 0.] x: [ 0. 0.], z: 0.0, z_target: 0.0, error: 0.0 x: [ 1. 0.], z: 0.0, z_target: 0.0, error: 0.0 x: [ 0. 1.], z: 0.0, z_target: 0.0, error: 0.0 x: [ 1. 1.], z: 0.0, z_target: 1.0, error: 0.5 Epoch 0: Error: 0.08792499999999971, w: [ 0.05 0.05], b: [ 0.09] Epoch 1: Error: 0.07136089779860384, w: [ 0.10037869 0.10037869], b: [ 0.13030295] Epoch 2: Error: 0.06852770435326894, w: [ 0.11391738 0.11391738], b: [ 0.14113391] Epoch 3: Error: 0.06788318451022468, w: [ 0.11755575 0.11755575], b: [ 0.1440446] Epoch 4: Error: 0.06771841746594348, w: [ 0.11853352 0.11853352], b: [ 0.14482682] Epoch 5: Error: 0.06767474776897946, w: [ 0.11879629 0.11879629], b: [ 0.14503703] Epoch 6: Error: 0.06766305606026743, w: [ 0.1188669 0.1188669], b: [ 0.14509352] Epoch 7: Error: 0.06765991722664656, w: [ 0.11888588 0.11888588], b: [ 0.1451087] Epoch 8: Error: 0.06765907393063264, w: [ 0.11889098 0.11889098], b: [ 0.14511278] Epoch 9: Error: 0.06765884732105898, w: [ 0.11889235 0.11889235], b: [ 0.14511388] Epoch 10: Error: 0.06765878642352607, w: [ 0.11889272 0.11889272], b: [ 0.14511418] Epoch 11: Error: 0.06765877005809727, w: [ 0.11889282 0.11889282], b: [ 0.14511425] Epoch 12: Error: 0.06765876566008176, w: [ 0.11889284 0.11889284], b: [ 0.14511428] Epoch 13: Error: 0.06765876447816584, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 14: Error: 0.06765876416053951, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 15: Error: 0.06765876407518104, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 16: Error: 0.06765876405224194, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 17: Error: 0.06765876404607732, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 18: Error: 0.06765876404442066, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 19: Error: 0.06765876404397544, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 20: Error: 0.06765876404385582, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 21: Error: 0.06765876404382365, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 22: Error: 0.06765876404381502, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 23: Error: 0.06765876404381269, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 24: Error: 0.06765876404381205, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 25: Error: 0.0676587640438119, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 26: Error: 0.06765876404381185, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 27: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 28: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 29: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 30: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 31: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 32: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 33: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 34: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 35: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 36: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 37: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 38: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 39: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 40: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 41: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 42: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 43: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 44: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 45: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 46: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 47: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 48: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 49: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 50: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 51: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 52: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 53: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 54: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 55: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 56: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 57: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 58: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 59: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 60: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 61: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 62: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 63: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 64: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 65: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 66: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 67: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 68: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 69: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 70: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 71: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 72: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 73: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 74: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 75: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 76: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 77: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 78: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 79: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 80: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 81: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 82: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 83: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 84: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 85: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 86: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 87: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 88: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 89: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 90: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 91: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 92: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 93: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 94: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 95: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 96: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 97: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 98: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] Epoch 99: Error: 0.06765876404381183, w: [ 0.11889285 0.11889285], b: [ 0.14511428] x: [ 0. 0.], z: [ 0.14511428], z_target: 0.0, error: 0.010529077654371036 x: [ 1. 0.], z: [ 0.26400714], z_target: 0.0, error: 0.034849884492072145 x: [ 0. 1.], z: [ 0.26400714], z_target: 0.0, error: 0.034849884492072145 x: [ 1. 1.], z: [ 0.38289999], z_target: 1.0, error: 0.19040620953673199
class Data:
def __init__(self):
self.training_input_value = np.array([(0.0, 0.0), (1.0, 0.0), (0.0, 1.0), (1.0, 1.0)])
self.training_z_target = np.array([0.0, 1.0, 1.0, 1.0])
self.numTrainData = len(self.training_input_value)
if __name__ == '__main__':
n = GateNeuron()
d = Data()
for idx in range(d.numTrainData):
input = d.training_input_value[idx]
z = n.z(input)
z_target = d.training_z_target[idx]
error = n.squared_error(input, z_target)
print("x: {0}, z: {1}, z_target: {2}, error: {3}".format(input, n.z(input), z_target, error))
n.learning(0.1, 100, d)
for idx in range(d.numTrainData):
input = d.training_input_value[idx]
z = n.z(input)
z_target = d.training_z_target[idx]
error = n.squared_error(input, z_target)
print("x: {0}, z: {1}, z_target: {2}, error: {3}".format(input, n.z(input), z_target, error))
Initial w: [ 0. 0.], b: [ 0.] x: [ 0. 0.], z: 0.0, z_target: 0.0, error: 0.0 x: [ 1. 0.], z: 0.0, z_target: 1.0, error: 0.5 x: [ 0. 1.], z: 0.0, z_target: 1.0, error: 0.5 x: [ 1. 1.], z: 0.0, z_target: 1.0, error: 0.5 Epoch 0: Error: 0.11990145668800876, w: [ 0.18932 0.18932], b: [ 0.201456] Epoch 1: Error: 0.07167508547047359, w: [ 0.26165934 0.26165934], b: [ 0.25932748] Epoch 2: Error: 0.0620513132581235, w: [ 0.28109972 0.28109972], b: [ 0.27487977] Epoch 3: Error: 0.0597059989457013, w: [ 0.28632409 0.28632409], b: [ 0.27905927] Epoch 4: Error: 0.059093125101371886, w: [ 0.28772808 0.28772808], b: [ 0.28018247] Epoch 5: Error: 0.05892967908610881, w: [ 0.28810539 0.28810539], b: [ 0.28048431] Epoch 6: Error: 0.05888584560732623, w: [ 0.28820679 0.28820679], b: [ 0.28056543] Epoch 7: Error: 0.05887407241666068, w: [ 0.28823404 0.28823404], b: [ 0.28058723] Epoch 8: Error: 0.0588709089797813, w: [ 0.28824136 0.28824136], b: [ 0.28059309] Epoch 9: Error: 0.058870058876500715, w: [ 0.28824333 0.28824333], b: [ 0.28059466] Epoch 10: Error: 0.05886983042343856, w: [ 0.28824386 0.28824386], b: [ 0.28059509] Epoch 11: Error: 0.05886976902946993, w: [ 0.288244 0.288244], b: [ 0.2805952] Epoch 12: Error: 0.05886975253055608, w: [ 0.28824404 0.28824404], b: [ 0.28059523] Epoch 13: Error: 0.05886974809666264, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 14: Error: 0.05886974690510459, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 15: Error: 0.05886974658488697, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 16: Error: 0.05886974649883219, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 17: Error: 0.058869746475705906, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 18: Error: 0.05886974646949103, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 19: Error: 0.05886974646782081, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 20: Error: 0.05886974646737197, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 21: Error: 0.058869746467251356, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 22: Error: 0.05886974646721893, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 23: Error: 0.05886974646721025, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 24: Error: 0.058869746467207905, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 25: Error: 0.058869746467207267, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 26: Error: 0.05886974646720711, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 27: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 28: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 29: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 30: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 31: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 32: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 33: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 34: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 35: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 36: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 37: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 38: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 39: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 40: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 41: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 42: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 43: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 44: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 45: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 46: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 47: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 48: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 49: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 50: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 51: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 52: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 53: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 54: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 55: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 56: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 57: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 58: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 59: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 60: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 61: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 62: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 63: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 64: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 65: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 66: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 67: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 68: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 69: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 70: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 71: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 72: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 73: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 74: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 75: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 76: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 77: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 78: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 79: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 80: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 81: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 82: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 83: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 84: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 85: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 86: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 87: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 88: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 89: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 90: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 91: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 92: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 93: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 94: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 95: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 96: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 97: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 98: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] Epoch 99: Error: 0.05886974646720705, w: [ 0.28824405 0.28824405], b: [ 0.28059524] x: [ 0. 0.], z: [ 0.28059524], z_target: 0.0, error: 0.03936684463945226 x: [ 1. 0.], z: [ 0.56883929], z_target: 1.0, error: 0.0929497779415466 x: [ 0. 1.], z: [ 0.56883929], z_target: 1.0, error: 0.0929497779415466 x: [ 1. 1.], z: [ 0.85708334], z_target: 1.0, error: 0.01021258534628274
class Data:
def __init__(self):
self.training_input_value = np.array([(0.0, 0.0), (1.0, 0.0), (0.0, 1.0), (1.0, 1.0)])
self.training_z_target = np.array([0.0, 1.0, 1.0, 0.0])
self.numTrainData = len(self.training_input_value)
if __name__ == '__main__':
n = GateNeuron()
d = Data()
for idx in range(d.numTrainData):
input = d.training_input_value[idx]
z = n.z(input)
z_target = d.training_z_target[idx]
error = n.squared_error(input, z_target)
print("x: {0}, z: {1}, z_target: {2}, error: {3}".format(input, n.z(input), z_target, error))
n.learning(0.1, 100, d)
for idx in range(d.numTrainData):
input = d.training_input_value[idx]
z = n.z(input)
z_target = d.training_z_target[idx]
error = n.squared_error(input, z_target)
print("x: {0}, z: {1}, z_target: {2}, error: {3}".format(input, n.z(input), z_target, error))
Initial w: [ 0. 0.], b: [ 0.] x: [ 0. 0.], z: 0.0, z_target: 0.0, error: 0.0 x: [ 1. 0.], z: 0.0, z_target: 1.0, error: 0.5 x: [ 0. 1.], z: 0.0, z_target: 1.0, error: 0.5 x: [ 1. 1.], z: 0.0, z_target: 0.0, error: 0.0 Epoch 0: Error: 0.1688197766880002, w: [ 0.08932 0.08932], b: [ 0.121456] Epoch 1: Error: 0.15104628360517683, w: [ 0.13478549 0.13478549], b: [ 0.15782839] Epoch 2: Error: 0.14758783650673266, w: [ 0.14700382 0.14700382], b: [ 0.16760305] Epoch 3: Error: 0.1467536031738944, w: [ 0.15028735 0.15028735], b: [ 0.17022988] Epoch 4: Error: 0.1465362867920789, w: [ 0.15116977 0.15116977], b: [ 0.17093581] Epoch 5: Error: 0.1464783819641094, w: [ 0.15140691 0.15140691], b: [ 0.17112552] Epoch 6: Error: 0.14646285655882632, w: [ 0.15147063 0.15147063], b: [ 0.17117651] Epoch 7: Error: 0.1464586868732158, w: [ 0.15148776 0.15148776], b: [ 0.17119021] Epoch 8: Error: 0.1464575665049202, w: [ 0.15149236 0.15149236], b: [ 0.17119389] Epoch 9: Error: 0.1464572654322638, w: [ 0.1514936 0.1514936], b: [ 0.17119488] Epoch 10: Error: 0.14645718452340706, w: [ 0.15149393 0.15149393], b: [ 0.17119515] Epoch 11: Error: 0.14645716278014786, w: [ 0.15149402 0.15149402], b: [ 0.17119522] Epoch 12: Error: 0.14645715693690078, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 13: Error: 0.14645715536659537, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 14: Error: 0.14645715494459377, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 15: Error: 0.14645715483118565, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 16: Error: 0.14645715480070853, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 17: Error: 0.14645715479251814, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 18: Error: 0.1464571547903171, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 19: Error: 0.14645715478972557, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 20: Error: 0.14645715478956658, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 21: Error: 0.14645715478952387, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 22: Error: 0.1464571547895124, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 23: Error: 0.14645715478950933, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 24: Error: 0.1464571547895085, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 25: Error: 0.1464571547895083, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 26: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 27: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 28: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 29: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 30: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 31: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 32: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 33: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 34: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 35: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 36: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 37: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 38: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 39: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 40: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 41: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 42: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 43: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 44: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 45: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 46: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 47: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 48: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 49: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 50: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 51: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 52: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 53: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 54: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 55: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 56: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 57: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 58: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 59: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 60: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 61: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 62: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 63: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 64: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 65: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 66: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 67: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 68: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 69: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 70: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 71: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 72: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 73: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 74: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 75: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 76: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 77: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 78: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 79: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 80: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 81: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 82: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 83: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 84: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 85: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 86: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 87: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 88: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 89: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 90: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 91: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 92: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 93: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 94: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 95: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 96: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 97: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 98: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] Epoch 99: Error: 0.1464571547895082, w: [ 0.15149405 0.15149405], b: [ 0.17119524] x: [ 0. 0.], z: [ 0.17119524], z_target: 0.0, error: 0.014653905632269279 x: [ 1. 0.], z: [ 0.3226893], z_target: 1.0, error: 0.2293748941962165 x: [ 0. 1.], z: [ 0.3226893], z_target: 1.0, error: 0.2293748941962165 x: [ 1. 1.], z: [ 0.47418335], z_target: 0.0, error: 0.11242492513333044