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++; }
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); }