示例#1
0
        public Vector <double> Conduct(NeuralNetworkFlash flash, int layer)
        {
            var signal = flash.SignalsSum[layer];

            signal = (signal - signal.Maximum()).PointwiseExp();
            return(signal / signal.Sum());
        }
示例#2
0
        public Vector <double> ConductDerivative(NeuralNetworkFlash flash, int layer)
        {
            // count of this layer
            layer = flash.InputSignals[layer + 1].Count;
            // return existing vector
            if (vector_one.ContainsKey(layer))
            {
                return(vector_one[layer]);
            }
            // build a new vector
            var one_list = Vector <double> .Build.DenseOfArray(new double[layer]) + 1;

            vector_one.Add(layer, one_list);
            return(one_list);
        }
示例#3
0
        public Vector <double> ConductDerivative(NeuralNetworkFlash flash, int layer)
        {
            var signal    = flash.InputSignals[layer + 1];
            var derivaite = Matrix <double> .Build.DenseOfArray(new double[signal.Count, signal.Count]);

            for (int i = signal.Count - 1; i >= 0; i--)
            {
                for (int j = i; j >= 0; j--)
                {
                    if (i == j)
                    {
                        derivaite[i, i] = signal[i] * (1 - signal[i]);
                    }
                    else
                    {
                        derivaite[i, j] = derivaite[j, i] = -signal[j] * signal[i];
                    }
                }
            }

            return(derivaite * signal);
        }
示例#4
0
 public Vector <double> ConductDerivative(NeuralNetworkFlash flash, int layer)
 {
     return(flash.SignalsExtra[EXP][layer] / flash.SignalsExtra[EXP_1][layer]);
 }
示例#5
0
 public Vector <double> Conduct(NeuralNetworkFlash flash, int layer)
 {
     flash.SignalsExtra[EXP][layer]   = flash.SignalsSum[layer].PointwiseMinimum(700).PointwiseExp();
     flash.SignalsExtra[EXP_1][layer] = flash.SignalsExtra[EXP][layer] + 1;
     return(flash.SignalsExtra[EXP_1][layer].PointwiseLog());
 }
示例#6
0
 public double Accuracy(NeuralNetworkFlash flash, double[] _)
 {
     // actually 'TotalError' is avrage of errors
     // becaue in 'NegativeErrorDerivative' function output is divided by count
     return(1 - flash.TotalError);
 }
示例#7
0
 public Vector <double> ConductDerivative(NeuralNetworkFlash flash, int layer)
 {
     return(flash.InputSignals[layer + 1]
            .PointwiseMultiply(1 - flash.InputSignals[layer + 1]));
 }
示例#8
0
 public Vector <double> Conduct(NeuralNetworkFlash flash, int layer)
 {
     return(1 / (1 + (flash.SignalsSum[layer] * -1).PointwiseExp()));
 }
示例#9
0
 public Vector <double> Conduct(NeuralNetworkFlash flash, int layer)
 {
     return(flash.SignalsSum[layer].PointwiseMaximum(0));
 }
示例#10
0
 public double Accuracy(NeuralNetworkFlash flash, double[] values)
 {
     return(values[flash.InputSignals[^ 1].MaximumIndex()]);
示例#11
0
 public void FillTotalError(NeuralNetworkFlash flash, double[] values)
 {
     chista_nets[index].FillTotalError(flash, values);
 }
示例#12
0
 public Vector <double> Conduct(NeuralNetworkFlash flash, int layer)
 {
     return(flash.SignalsSum[layer]);
 }
示例#13
0
 public double Accuracy(NeuralNetworkFlash flash, double[] values)
 {
     return(1 - flash.ErrorAverage);
     //return values[flash.InputSignals[^1].MaximumIndex()];
 }