Exemple #1
0
        public static void ShowPercent(NeuralNetwork network, IUnorderedNeuralVectorFlowProvider provider)
        {
            Contract.Requires(network != null);
            Contract.Requires(provider != null);

            if (!Console.KeyAvailable) return;

            Console.ReadKey();

            var prov = provider as LeCunSampleProvider;
            if (prov == null) return;

            if (validationVectorFlows == null) validationVectorFlows = prov.GetAll().ToList();

            var clone = network; // TODO: Clone

            double count = 0;
            double okCount = 0;

            foreach (var vectorFlow in validationVectorFlows)
            {
                clone.Reset();

                var entry = vectorFlow.Entries[0];

                for (int idx = 0; idx < entry.InputVector.Length; idx++)
                {
                    clone.InputInterface[idx] = entry.InputVector[idx].Value;
                }

                for (int i = 0; i < entry.NumberOfIterations; i++)
                {
                    clone.Iteration();
                }

                int desiredNumber = GetNumber(entry.DesiredOutputVector);
                int detectedNumber = GetNumber(clone.OutputInterface);

                if (desiredNumber == detectedNumber) okCount++;

                count++;
            }

            double current = 100.0 - (okCount / count) * 100.0;

            Console.WriteLine("Current precent: " + current.ToString("0.0000") + "%");

            GC.Collect();
        }
Exemple #2
0
        public static void TestNetwork(NeuralNetwork network, IUnorderedNeuralVectorFlowProvider validationProvider)
        {
            Contract.Requires(network != null);

            if (!Console.KeyAvailable) return;
            Console.ReadKey();

            var prov = (FullSampleProvider)validationProvider;

            if (validationVectorFlows == null) validationVectorFlows = prov.GetAllVectors().ToList();

            var clone = network; //TODO: Clone

            //Task.Factory.StartNew(() =>
            //{
                int fnCount = 0;
                int fpCount = 0;
                int okCount = 0;
                int count = 0;

                foreach (var vectorFlow in validationVectorFlows)
                {
                    bool isDetectable = false;

                    clone.Reset();

                    foreach (var vector in vectorFlow.Entries)
                    {
                        for (int idx = 0; idx < vector.InputVector.Length; idx++)
                        {
                            clone.InputInterface[idx] = vector.InputVector[idx].Value;
                        }

                        for (int i = 0; i < vector.NumberOfIterations; i++)
                        {
                            clone.Iteration();
                        }

                        if (vector.DesiredOutputVector[0] != null)
                        {
                            isDetectable = vector.DesiredOutputVector[0].Value > 0.0;
                        }
                    }

                    double detectedOutput = clone.OutputInterface[0];

                    bool isDetectedByNetwork = detectedOutput > 0.0;

                    if (isDetectedByNetwork == isDetectable)
                    {
                        okCount++;
                    }
                    else
                    {
                        if (isDetectedByNetwork)
                        {
                            fpCount++;
                        }
                        else
                        {
                            fnCount++;
                        }
                    }

                    count++;
                }

                double percent = ((double)okCount / count) * 100.0;

                var result = new TestResult(percent, fnCount, fpCount);
                Console.WriteLine(result);
            //});
        }
Exemple #3
0
        public static void TestNetwork(NeuralNetwork network, IUnorderedNeuralVectorFlowProvider validationProvider)
        {
            //Contract.Requires(network != null);

            //if (!Console.KeyAvailable) return;
            //Console.ReadKey();

            //var prov = (FullSampleProvider)validationProvider;

            //if (validationVectorFlows == null) validationVectorFlows = prov.GetAllVectors().ToList();

            //var clone = network; //TODO: Clone

            ////Task.Factory.StartNew(() =>
            ////{
            //    int fnCount = 0;
            //    int fpCount = 0;
            //    int okCount = 0;
            //    int count = 0;

            //    foreach (var vectorFlow in validationVectorFlows)
            //    {
            //        bool isDetectable = false;

            //        clone.Reset(NeuralNetworkResetTarget.Outputs);

            //        foreach (var vector in vectorFlow.Entries)
            //        {
            //            clone.WriteInput(vector.InputVector);

            //            for (int i = 0; i < vector.NumberOfIterations; i++)
            //            {
            //                clone.Iteration();
            //            }

            //            if (vector.DesiredOutputVector[0] != null)
            //            {
            //                isDetectable = vector.DesiredOutputVector[0].Value > 0.0;
            //            }
            //        }

            //        float[] outputVector = new float[1];
            //        clone.ReadOutput(outputVector);
            //        float detectedOutput = outputVector[0];

            //        bool isDetectedByNetwork = detectedOutput > 0.0;

            //        if (isDetectedByNetwork == isDetectable)
            //        {
            //            okCount++;
            //        }
            //        else
            //        {
            //            if (isDetectedByNetwork)
            //            {
            //                fpCount++;
            //            }
            //            else
            //            {
            //                fnCount++;
            //            }
            //        }

            //        count++;
            //    }

            //    float percent = ((float)okCount / (float)count) * 100.0f;

            //    var result = new TestResult(percent, fnCount, fpCount);
            //    Console.WriteLine(result);
            ////});
        }