Exemple #1
0
 public override void Update(AdaptationStrategy strategy)
 {
     Biases.Add(strategy.BiasesUpdate(_biasesGradientAccumulator));
     Weights.Add(strategy.WeightsUpdate(_weightsGradientAccumulator));
     _biasesGradientAccumulator.Zero();
     _weightsGradientAccumulator.Zero();
 }
Exemple #2
0
 private void CreateMatrix(int inputSize, int hiddenSize, int hiddenLayers, int outputSize)
 {
     // ??
     for (int i = 0; i < hiddenLayers + 1; ++i)
     {
         int inSize  = (i == 0) ? inputSize : hiddenSize;
         int outSize = (i == hiddenLayers) ? outputSize : hiddenSize;
         Weights.Add(new Matrix(inSize, outSize));
         Biases.Add(new Matrix(1, outSize));
     }
 }
 private void FindBiases()
 {
     foreach (var outputSynapse in Inputs.SelectMany(i => i.Outgoing))
     {
         Biases.Add(outputSynapse.To.BiasSynapse.From);
         foreach (var targetOutput in outputSynapse.To.Outgoing)
         {
             Biases.Add(targetOutput.To.BiasSynapse.From);
         }
     }
 }
        public void Init(List <Data> trainData, List <Data> testData, int[] sizes)
        {
            TrainData = trainData;
            TestData  = testData;

            Num_layers = sizes.Length;
            Sizes      = sizes;

            for (int counter = 1; counter < Num_layers; counter++)
            {
                Biases.Add(np.random.randn(new int[] { Sizes[counter], 1 }));
            }

            foreach (var item in Sizes[..^ 1].Zip(Sizes[1..]))
Exemple #5
0
 public NNBrain(NNBrain other)
 {
     InputSize    = other.InputSize;
     OutputSize   = other.OutputSize;
     HiddenLayers = other.HiddenLayers;
     HiddenSize   = other.HiddenSize;
     // ??
     for (int i = 0; i < other.Weights.Count; ++i)
     {
         Matrix w = other.Weights[i].Copy();
         Matrix b = other.Biases[i].Copy();
         Weights.Add(w);
         Biases.Add(b);
     }
 }
Exemple #6
0
    public void Init(int inputsAmount, int[] neuronsInHiddenLayersAmount, int outputsAmount,
                     Func <double, double>[] activationsFunctions)
    {
        Validate(neuronsInHiddenLayersAmount, activationsFunctions.Length, outputsAmount);
        ActivationsFunctions = activationsFunctions;

        InitHiddenLayers(inputsAmount, neuronsInHiddenLayersAmount);

        var weightsLastHiddenLayerToOutputLayer =
            new Matrix(neuronsInHiddenLayersAmount[neuronsInHiddenLayersAmount.Length - 1], outputsAmount);

        Weights.Add(weightsLastHiddenLayerToOutputLayer);
        Biases.Add(Random.Range(-1f, 1f));

        GenerateWeightsValues();
    }
        public NeuralNetwork(ISource source, params int[] sizes)
        {
            _source   = source;
            Sizes     = sizes.ToList();
            NumLayers = sizes.Length;

            for (var y = 1; y < sizes.Length; y++)
            {
                var newBiases = Vector <double> .Build.Random(sizes[y]);

                Biases.Add(newBiases);
            }

            for (int x = 0, y = 1; y < sizes.Length; y++, x++)
            {
                var newWeights = Matrix <double> .Build.Random(sizes[x], sizes[y]);

                Weights.Add(newWeights);
            }
        }
Exemple #8
0
    private void InitHiddenLayers(int inputsAmount, int[] neuronsInHiddenLayersAmount)
    {
        for (var neuronsCount = 0; neuronsCount < neuronsInHiddenLayersAmount.Length; neuronsCount++)
        {
            var hiddenLayer = new Matrix(1, neuronsInHiddenLayersAmount[neuronsCount]);
            HiddenLayers.Add(hiddenLayer);
            Biases.Add(Random.Range(-1f, 1f));

            if (neuronsCount == 0)
            {
                var weightsInputToHiddenLayer1 = new Matrix(inputsAmount, neuronsInHiddenLayersAmount[neuronsCount]);
                Weights.Add(weightsInputToHiddenLayer1);
            }
            else
            {
                var weightsHliToNextHl = new Matrix(neuronsInHiddenLayersAmount[neuronsCount - 1],
                                                    neuronsInHiddenLayersAmount[neuronsCount]);
                Weights.Add(weightsHliToNextHl);
            }
        }
    }