Esempio n. 1
0
 public override void CalcGrads(ILoss loss, Array <double> targets)
 {
     Neurons.ForEach((N, i) =>
     {
         N.Gradient = Activation.Derivative(N.InVal, N.OutVal) * loss.Derivative(targets[i], N.OutVal);
         N.InSynapses.ForEach(S => S.Gradient = N.Gradient * S.InNeuron.OutVal);
     });
 }
Esempio n. 2
0
        public override void CalcGrads(ILoss loss, Array <double> targets)
        {
            double gSum = 0.0;

            Neurons.ForEach((N, i) =>
            {
                N.Gradient = loss.Derivative(targets[i], N.OutVal);
                gSum      += N.Gradient * N.OutVal;
            });

            Neurons.ForEach(N =>
            {
                N.Gradient = N.OutVal * (N.Gradient - gSum);
                N.InSynapses.ForEach(S => S.Gradient = N.Gradient * S.InNeuron.OutVal);
            });
        }
Esempio n. 3
0
 public sealed override void CalcGrads(ILoss loss, Array <double> targets)
 {
     Neurons.ForEach((N, i) => N.Gradient = loss.Derivative(targets[i], N.OutVal));
 }