Пример #1
0
        public void Retry()
        {
            opponent.CloneTo(trainee);

            expansion += acceleration;

            //move.Reset((float) rng.NextDouble() * expansion);

            move.Reset();
            Layer layer = move.layers[rng.Next(0, move.layers.Length)];
            int   n     = rng.Next(0, layer._matrix.Length);
            int   w     = rng.Next(0, layer._matrix[0].Length);

            float[] weights = new float[layer._matrix[0].Length];
            weights.Initialize();
            weights[w] = (rng.Next(0, 2) * 2 - 1) * expansion;

            layer.SetNeuron(layer._shape.At(n), weights);


            Console.WriteLine(trainee.net.layers[0]._matrix[0][0]);
            trainee.net.Add(move);
            Console.WriteLine(trainee.net.layers[0]._matrix[0][0]);
            generation++;
        }
Пример #2
0
        public Trainer(Go game, int generation, string savePath)
        {
            this.game       = game;
            this.generation = generation;
            this.savePath   = savePath;
            rng             = new Random();
            move            = new NNet(game.Shape);

            if (generation == 0)
            {
                trainee = new Player(game, Color.White);
            }
            else
            {
                trainee = new Player(game, Color.White, savePath + generation + ".dat");
            }
            opponent = new Player(game, Color.Black);
            trainee.CloneTo(opponent);
        }