from neuron import Neuron from connection import Connection import random import json class Network(): def __init__(self): self.layers = [] def build_layers(self, count:int, input_size:int, output_size:int, layer_size:int): for layer in range(0, count): self.layers.append([]) for _ in range(0, input_size if layer == 0 else output_size if layer == count - 1 else layer_size): self.layers[layer].append(Neuron()) def _connect_layer(self, last_layer, current_layer): for last_neuron in last_layer: for current_neuron in current_layer: connection = Connection(last_neuron, current_neuron) last_neuron.connect_out(connection) current_neuron.connect_in(connection) def connect_layers(self): for i in range(1, len(self.layers)): last_layer = self.layers[i-1] current_layer = self.layers[i] self._connect_layer(last_layer, current_layer) def fire(self, vec): for l in range(0, len(self.layers)): layer = self.layers[l] for i in range(0, len(layer)): neuron = layer[i] neuron.calc(vec[i] if l == 0 else None) output = [] for i in range(0, len(self.layers[-1])): layer = self.layers[-1] output.append(layer[i].value) return output