All pastes #107281 Raw Edit

Unnamed

public text v1 · immutable
#107281 ·published 2006-07-30 23:11 UTC
rendered paste body
#!/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])