import random class Connection: def __init__(self, in_, out_): self.weight = random.uniform(-1.0, 1.0) self.in_ = in_ self.out_ = out_ self.value = 0.0 def transfer(self, value:float): self.value = value def adjust(self, delta:float, learning_rate:float): old_weight = self.weight gradient = delta * self.value self.weight += learning_rate * gradient if self.in_ is None: return error_for_prev = delta * old_weight self.in_.adjust(error_for_prev, learning_rate)