def load(self): self.model = NeuralNetwork() self.model.load('car_model.dat') self.step = 0 self.max_step = 0 self.training_group = [] self.best_traning = [] RaceGame.__init__(self)
def start(self): self.len_delta = len(self.delta_angle) self.nn_nodes = [5, 8, 5, self.len_delta] self.model = NeuralNetwork(self.nn_nodes) self.step = 0 self.max_step = 0 self.training_group = [] self.best_traning = [] RaceGame.__init__(self)
class CarGenetic(RaceGame): def __init__(self): self.delta_angle = [ -0.035, -0.03, -0.025, -0.02, -0.015, -0.01, -0.005, 0, 0.005, 0.01, 0.015, 0.02, 0.025, 0.03, 0.035 ] def start(self): self.len_delta = len(self.delta_angle) self.nn_nodes = [5, 8, 5, self.len_delta] self.model = NeuralNetwork(self.nn_nodes) self.step = 0 self.max_step = 0 self.training_group = [] self.best_traning = [] RaceGame.__init__(self) def load(self): self.model = NeuralNetwork() self.model.load('car_model.dat') self.step = 0 self.max_step = 0 self.training_group = [] self.best_traning = [] RaceGame.__init__(self) def update(self): RaceGame.update(self) if self.is_broken: self.training_car() self.car.restart() self.training_group = [] self.step = 0 else: input = self.collision_sight + [self.car.angle] id_output = self.model.train(input) self.training_group.append((input, id_output)) self.step += 1 if self.step == 300: self.model.save('car_model.dat') self.car.update(delta_angle=self.delta_angle[id_output]) def training_car(self): num_last_step = 5 if self.step > self.max_step: self.max_step = self.step self.best_traning = self.training_group[:-num_last_step] for train_data in self.best_traning: self.model.train(train_data[0], expected_id=train_data[1]) for train_data in self.training_group[-num_last_step:]: self.model.train(train_data[0], unexpected_id=train_data[1])
class CarGenetic(RaceGame): def __init__(self): self.delta_angle = [-0.035, -0.03, -0.025, -0.02, -0.015, -0.01, -0.005, 0, 0.005, 0.01, 0.015, 0.02, 0.025, 0.03, 0.035] def start(self): self.len_delta = len(self.delta_angle) self.nn_nodes = [5, 8, 5, self.len_delta] self.model = NeuralNetwork(self.nn_nodes) self.step = 0 self.max_step = 0 self.training_group = [] self.best_traning = [] RaceGame.__init__(self) def load(self): self.model = NeuralNetwork() self.model.load('car_model.dat') self.step = 0 self.max_step = 0 self.training_group = [] self.best_traning = [] RaceGame.__init__(self) def update(self): RaceGame.update(self) if self.is_broken: self.training_car() self.car.restart() self.training_group = [] self.step = 0 else: input = self.collision_sight + [self.car.angle] id_output = self.model.train(input) self.training_group.append((input, id_output)) self.step += 1 if self.step == 300: self.model.save('car_model.dat') self.car.update(delta_angle=self.delta_angle[id_output]) def training_car(self): num_last_step = 5 if self.step > self.max_step: self.max_step = self.step self.best_traning = self.training_group[:-num_last_step] for train_data in self.best_traning: self.model.train(train_data[0], expected_id=train_data[1]) for train_data in self.training_group[-num_last_step:]: self.model.train(train_data[0], unexpected_id=train_data[1])
def get_model(self, weight): model = NeuralNetwork(self.nn_nodes) nn_weight = [] for i in range(1, len(self.nn_nodes)): layer_weight = [] for _ in range(self.nn_nodes[i]): layer_weight.append(weight[:self.nn_nodes[i - 1]]) weight = weight[self.nn_nodes[i - 1]:] nn_weight.append(layer_weight) model.set_weight(nn_weight) return model
def get_model(self, weight): model = NeuralNetwork(self.nn_nodes) nn_weight = [] for i in range(1, len(self.nn_nodes)): layer_weight = [] for _ in range(self.nn_nodes[i]): layer_weight.append(weight[: self.nn_nodes[i - 1]]) weight = weight[self.nn_nodes[i - 1] :] nn_weight.append(layer_weight) model.set_weight(nn_weight) return model
def __init__(self, layer_nodes=None, len_sequence=None): self.len_sequence = len_sequence self.recurrent_size = 2 if layer_nodes: layer_nodes[0] += self.recurrent_size layer_nodes[-1] += self.recurrent_size self.nn = [ NeuralNetwork(layer_nodes=layer_nodes) for _ in range(self.len_sequence) ]
__author__ = 'sunary' from neural_network.model_nn import NeuralNetwork import pandas as pd import datetime model = NeuralNetwork([50, 20, 10, 2]) model.load('numer_ai.dat') def train(file='/Users/sunary/Downloads/numerai_datasets/numerai_training_data.csv'): df = pd.read_csv(file) for _round in range(100): print 'Round {}: {}'.format(_round, datetime.datetime.now()) for index, row in df.iterrows(): model.train(row[:50].tolist(), int(row['target'])) model.save('numer_ai.dat') def test(file='/Users/sunary/Downloads/numerai_datasets/numerai_training_data.csv'): df = pd.read_csv(file) accuracy = 0 for index, row in df.iterrows(): predict_id = model.train(row[:50].tolist()) if predict_id == int(row['target']): accuracy += 1