On line 7&8 I am trying to set a group of object values according to an input array, but the property for all of the objects is set to 10 - the value in the last iteration of the loop. If somebody could explain why this isn't working how I would expect it to that would be amazing.
I am currently learning python, so I have no idea if there is an easier way to do this.
class Network:
def __init__(self, input_data, layers, nodes, output_length):
self.layer = [Layer(len(input_data))]
self.layer += [Layer(nodes)] * layers
self.layer += [Layer(output_length)]
self.input = input_data
for __i in range(len(self.input)):
self.layer[0].nodes[__i].value = self.input[__i]
for self.i in range(1, self.layer.__len__()):
for self.j in range(0, self.layer[self.i].nodes.__len__()):
self.layer[self.i].nodes[self.j].connection = [None] * self.layer[self.i - 1].nodes.__len__()
def compute(self):
for self.i in range(1, len(self.layer)):
for self.j in range(0, len(self.layer[self.i].nodes)):
for self.k in range(0, len(self.layer[self.i].nodes[self.j].connection)):
self.layer[self.i].nodes[self.k].value += self.layer[self.i-1].nodes[self.k] * self.layer[self.i].nodes[self.j].value[self.k]
class Layer:
def __init__(self, nodes):
self.nodes = [NodeObject()] * nodes
class NodeObject:
def __init__(self):
self.value = 0
self.connection = [None]
def set_value(self, value):
self.value = value
i = Network([1,2,3,4,5,6,7,8,9,10], 2, 16, 10)
print(i.layer[0].nodes[2].value)
Thanks in advance,
Matt