1
0
Fork 0
neural-network/Perceptron.py

33 lines
785 B
Python
Raw Permalink Normal View History

2024-02-08 09:55:43 +01:00
import random
class Perceptron:
def __init__(self, n):
self.weights = [random.randint(-1, 1) for _ in range(0, n)]
self.lr = 0.1
@staticmethod
def sign(output):
if output >= 0:
return 1
else:
return -1
def guess(self, inputs):
s = 0
for i, inp in enumerate(inputs):
s += inp * self.weights[i]
return Perceptron.sign(s)
def guessY(self, x):
w0 = self.weights[0]
w1 = self.weights[1]
w2 = self.weights[2]
return -(w2 / w1) - (w0 / w1) * x
def train(self, inputs, target):
error = target - self.guess(inputs)
for i, w in enumerate(self.weights):
self.weights[i] += error * inputs[i] * self.lr