from Input import Input class Perceptron(object): def __init__(self): self.inputs = {} def print(self): for key in self.inputs: print(key + ":") self.inputs[key].print() def input(self, p_input1, p_input2): self.inputs[0] = p_input1 self.inputs[1] = p_input2 def add_input(self, p_name, p_value, p_weight): self.inputs[p_name] = Input(p_value, p_weight) def set_weight(self, p_input, p_weight): self.inputs[p_input].weight = p_weight def _sum_inputs(self): total = 0 for key, value in self.inputs.items(): total += value.output() return total def activation(self): input = self._sum_inputs() print("Sum of inputs = %f" % input) if input > 0: return 1 else: return -1 def guess(self, p_desired, p_learning_constant): prediction = float(self.activation()) error = p_desired - prediction for key in self.inputs: self.inputs[key].weight += error * self.inputs[key].value * p_learning_constant return error