Esempio n. 1
0
 private static void BackProgagate()
 {
     OutLayer.CalculateErrors();
     HidLayer.CalculateErrors();
     HidLayer.AdjustWeights();
     InLayer.AdjustWeights();
 }
Esempio n. 2
0
        public static void Test()
        {
            Console.WriteLine("Starts to test the neural network ...");
            InitializeConfusionMatrix();
            var gesamtElemente   = 0;
            var korrekteElemente = 0;

            foreach (var image in TestData)
            {
                gesamtElemente++;
                SetNeuronValueFromImage(image.Data);   //Image data wird in InputLayer eingelesen
                SetDesiredValueFromLabel(image.Label); //LabelDaten werden im OutputLayer gespeichert für späteren Vergleich
                FeedForward();
                for (var i = 0; i < OutLayer.DesiredValues.Length; i++)
                {
                    if (OutLayer.DesiredValues[i].CompareTo(1) != 0)
                    {
                        continue;
                    }
                    if (OutLayer.GetHighestNeuronIndex() == i)
                    {
                        korrekteElemente++;
                    }
                }
                ConfusionMatrix[(int)image.Label, OutLayer.GetHighestNeuronIndex()]++;
            }
            Console.WriteLine("Creating Confusion-Matrix ...");
            var accuracy = ((double)korrekteElemente * (double)100 / (double)gesamtElemente);

            PrintConfusionMatrix();
            Console.WriteLine($"Accuracy: {accuracy} %");
        }
Esempio n. 3
0
 private void isModelParametersValid()
 {
     if (Network[0].Type == LayerType.Custom)
     {
         return;
     }
     //the last layer in the network should be output
     if (Network.Last().Param1.ToString() != OutLayer.First().Dimension)
     {
         throw new Exception("The output dimension of the last layer in the network must be same as label dimension!");
     }
     if (Network.Where(x => x.Param1 <= 0 && (x.Type != LayerType.Normalization && x.Type != LayerType.Drop)).Count() > 0)
     {
         throw new Exception("Layer cannot be defined with zero output dimension.!");
     }
     if (Network.Where(x => x.Param2 <= 0 && (x.Type == LayerType.LSTM || x.Name.StartsWith("CudaStacked"))).Count() > 0)
     {
         throw new Exception("Layer cannot be defined with zero output dimension.!");
     }
 }
Esempio n. 4
0
 private static void FeedForward()
 {
     InLayer.CalculateNeuronValues();
     HidLayer.CalculateNeuronValues();
     OutLayer.CalculateNeuronValues();
 }