from network import Network import json import random class Trainer: def __init__(self, network: Network, train_file): self.network = network with open(train_file, "r") as file: f_data = file.read() self.data = json.loads(f_data) def adjust(self, check_vec, layer_idx): layer = self.network.layers[layer_idx] for i, neuron in enumerate(layer): error = check_vec[i] - neuron.value neuron.adjust(error) def train(self, iters): for i in range(0, iters): print(f"Train {(i / iters) * 100}%") sample = random.choice(self.data) in_vec = sample[0] check_vec = sample[1] self.network.fire(in_vec) self.adjust(check_vec, len(self.network.layers) - 1)