示例#1
0
    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);
    }