コード例 #1
0
ファイル: BrainCore.cs プロジェクト: Pimpeczek/PiwotBrainLib
 /// <summary>
 /// Uses existing brain to create new one.
 /// </summary>
 /// <param name="baseBrain">Brain to be copied.</param>
 public BrainCore(BrainCore baseBrain)
 {
     biases      = baseBrain.biases;
     synapses    = baseBrain.synapses;
     layerCounts = baseBrain.layerCounts;
     int[] hiddenNeurons = new int[layerCounts.Length - 2];
     for (int i = 0; i < hiddenNeurons.Length;)
     {
         hiddenNeurons[i] = layerCounts[++i];
     }
     SetupLayerCounts(layerCounts[0], hiddenNeurons, layerCounts[layerCounts.Length - 1]);
     activeNeurons    = new Matrix <double> [neuronLayerCount];
     neuronActivation = baseBrain.neuronActivation;
 }
コード例 #2
0
ファイル: BrainCore.cs プロジェクト: Pimpeczek/PiwotBrainLib
        public BrainCore(BrainCore baseBrain, int fromLayer, int layerCount)
        {
            if (fromLayer + layerCount > baseBrain.layerCounts.Length)
            {
                throw new ArgumentOutOfRangeException();
            }
            if (fromLayer < 0 || layerCount < 1)
            {
                throw new ArgumentOutOfRangeException();
            }

            biases      = PiwotToolsLib.Data.Arrays.BuildSubArray(baseBrain.biases, fromLayer, layerCount);
            synapses    = PiwotToolsLib.Data.Arrays.BuildSubArray(baseBrain.synapses, fromLayer, layerCount);
            layerCounts = PiwotToolsLib.Data.Arrays.BuildSubArray(baseBrain.layerCounts, fromLayer, layerCount);
            int[] hiddenNeurons = new int[layerCounts.Length - 2];
            for (int i = 0; i < hiddenNeurons.Length;)
            {
                hiddenNeurons[i] = layerCounts[++i];
            }
            SetupLayerCounts(layerCounts[0], hiddenNeurons, layerCounts[layerCounts.Length - 1]);
            activeNeurons    = new Matrix <double> [neuronLayerCount];
            neuronActivation = baseBrain.neuronActivation;
        }