Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
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])
Ejemplo n.º 4
0
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])
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
 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)
Ejemplo n.º 9
0
    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)
        ]
Ejemplo n.º 10
0
__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