#!/usr/bin/python from random import random class Neuron: def __init__(self, number_of_inputs): self.weights = [random() for i in range(number_of_inputs)] def run(self, inputs): res = 0 if len(self.weights) != len(inputs): some_function_that_deals_with_this_case_here() for i,w in zip(inputs, self.weights): res += i * w self.state = res return res class Network: def __init__(self, number_of_inputs, number_of_outputs): # I am arbitrarily choosing this dimensions self.nodes = [ [Neuron(number_of_inputs) for i in range(number_of_inputs)], [Neuron(number_of_inputs)\ for i in range(number_of_inputs * number_of_outputs)], [Neuron(number_of_inputs) for i in range(number_of_outputs)], ] def run(self, inputs): layer_1 = [] for n in self.nodes[0]: layer_1 += [n.run(inputs)] layer_2 = [] for n in self.nodes[1]: layer_2 += [n.run(layer_1)] outputs = [] for n in self.nodes[1]: outputs += [n.run(layer_2)] return outputs N = Network(2, 1) print N.run([1,-1])