init
This commit is contained in:
+32
@@ -0,0 +1,32 @@
|
||||
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)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user