class NeuralNetwork: def __init__(self, rng, n_in, n_out, hl): # will contain basically a list of Hidden Layers objects. self.layers = [] inp_size = n_in for i in range(len(hl)): HL = HiddenLayer(rng, inp_size, hl[i]) self.layers.append(HL) inp_size = hl[i] self.op = LogisticRegression(inp_size, n_out) self.params = [] for l in self.layers: self.params = self.params + l.params self.params = self.params + self.op.params # self.params = [l.params for l in self.layers] # forward pass is here def forward(self, x): act = [x] for i, l in enumerate(self.layers): act.append(l.output(act[i])) return act def cost(self, x, y): act = self.forward(x) estimate = act[-1] return self.op.cost(estimate, y) def calcAccuracy(self, x, y): act = self.forward(x) ll = act[-1] return self.op.calcAccuracy(ll, y)