#!/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])