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); }
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); } }