public override async Task <int[][]> GenerateConfusionMatrix()
 {
     if (TrainingModel.IsTraining)
     {
         App.RunInUiThread(() =>
         {
             NotifyUser.NotifyUserByMessage("Cannot run test. Neural network training is in progress. If you need test neural network please stop training first.");
         });
         return(null);
     }
     if (TrainingModel.Network == null)
     {
         return(null);
     }
     int[][] confusionMatrix = null;
     try
     {
         TrainingModel.InTesting = true;
         var tester = new NetworkTester(TrainingModel.Network, DataSetModel);
         var task   = Task.Run(() =>
         {
             tester.RunTest();
             return(tester.GenerateConfusionMatrixData());
         });
         confusionMatrix = await task;
         task.Dispose();
         SuccessRatio = tester.Correctness;
     }
     finally
     {
         TrainingModel.InTesting = false;
     }
     return(confusionMatrix);
 }
Example #2
0
        public override async Task <int[][]> GenerateConfusionMatrix()
        {
            try
            {
                if (_networkToTest == null)
                {
                    _networkToTest = TrainedNetModel.GetNetwork(null, DataSetModel);
                }
                NetworkTester tester = null;
                var           matrix = await Task.Run(() =>
                {
                    tester = new NetworkTester(_networkToTest, DataSetModel);
                    tester.RunTest();

                    return(tester.GenerateConfusionMatrixData());
                });

                SuccessRatio = tester.Correctness;
                return(matrix);
            }
            catch (Exception e)
            {
                _networkToTest = null;
                NotifyUser.NotifyUserByMessage("Network failed to load.", e);
                return(null);
            }
        }