public void FromGenome(Genome genome, int numofInputs, int neuronsPerHidden, int numOfOutputs) { ReleaseNet(); outputAmount = numOfOutputs; inputAmount = numofInputs; int weightsForHidden = numofInputs * neuronsPerHidden; NLayer hidden = new NLayer(); List <Neuron> neurons = new List <Neuron>(); for (int i = 0; i < neuronsPerHidden; i++) { //init neurons.Add(new Neuron()); List <float> weights = new List <float>(); //init for (int j = 0; j < numofInputs + 1; j++) { weights.Add(0.0f); weights[j] = genome.weights[i * neuronsPerHidden + j]; } neurons[i].weights = new List <float>(); neurons[i].Initilise(weights, numofInputs); } hidden.LoadLayer(neurons); //Debug.Log ("fromgenome, hiddenlayer neruons#: " + neurons.Count); //Debug.Log ("fromgenome, hiddenlayer numInput: " + neurons [0].numInputs); this.hiddenLayers.Add(hidden); //Clear weights and reasign the weights to the output int weightsForOutput = neuronsPerHidden * numOfOutputs; List <Neuron> outneurons = new List <Neuron> (); for (int i = 0; i < numOfOutputs; i++) { outneurons.Add(new Neuron()); List <float> weights = new List <float>(); for (int j = 0; j < neuronsPerHidden + 1; j++) { weights.Add(0.0f); weights[j] = genome.weights[i * neuronsPerHidden + j]; } outneurons[i].weights = new List <float>(); outneurons[i].Initilise(weights, neuronsPerHidden); } this.outputLayer = new NLayer(); this.outputLayer.LoadLayer(outneurons); //Debug.Log ("fromgenome, outputlayer neruons#: " + outneurons.Count); //Debug.Log ("fromgenome, outputlayer numInput: " + outneurons [0].numInputs); }
public void FromGenome(Genome genome, int numofInputs, int neuronsPerHidden, int numOfOutputs) { ReleaseNet(); outputAmount = numOfOutputs; NLayer hidden = new NLayer(); List <Neuron> neurons = new List <Neuron>(); for (int i = 0; i < neuronsPerHidden; i++) { neurons.Add(new Neuron()); List <float> weights = new List <float>(); for (int j = 0; j < numofInputs + 1; j++) { weights.Add(0.0f); weights[j] = genome.weights[i * neuronsPerHidden + j]; } neurons[i].weights = new List <float>(); neurons[i].Initilise(weights, numofInputs); } hidden.LoadLayer(neurons); this.hiddenLayers.Add(hidden); //Clear weights and reasign the weights to the output List <Neuron> outneurons = new List <Neuron> (); for (int i = 0; i < numOfOutputs; i++) { outneurons.Add(new Neuron()); List <float> weights = new List <float>(); for (int j = 0; j < neuronsPerHidden + 1; j++) { weights.Add(0.0f); weights[j] = genome.weights[i * neuronsPerHidden + j]; } outneurons[i].weights = new List <float>(); outneurons[i].Initilise(weights, neuronsPerHidden); } this.outputLayer = new NLayer(); this.outputLayer.LoadLayer(outneurons); }