Exemplo n.º 1
0
 public double Execute(params double[] inputs)
 {
     if (inputs.Length == _inputNeurons.Count)
     {
         var i = 0;
         return(_outputNeuron.ActivationFunc(_inputNeurons
                                             .Select(neuron => neuron.ActivationFunc(inputs[i++]))
                                             .ToArray()
                                             ));
     }
     else
     {
         throw new ArgumentException("Invalid input data length", nameof(inputs));
     }
 }
Exemplo n.º 2
0
 /// <summary>
 /// Коррекция весов нейрона
 /// </summary>
 /// <param name="neuron">Нейрон</param>
 /// <param name="error">Ошибка</param>
 private void UpdateWeights(Neuron neuron, double error)
 {
     if (neuron.NeuronType == TypeOfNeuron.Input)
     {
         return;
     }
     if (error != 0)
     {
         neuron.Delta = error * neuron.ActivationFunc(neuron.Output);
     }
     else
     {
         neuron.Delta = 0;
     }
     for (int i = 0; i < neuron.Weights.Count; i++)
     {
         var weight    = neuron.Weights[i];
         var input     = neuron.Inputs[i];
         var newWeigth = weight + input * neuron.Delta;
         neuron.Weights[i] = newWeigth;
     }
 }