List of usage examples for org.opencv.ml ANN_MLP setTermCriteria
public void setTermCriteria(TermCriteria val)
From source file:qupath.opencv.classify.NeuralNetworksClassifier.java
License:Open Source License
@Override protected void createAndTrainClassifier() { // Create the required Mats int nMeasurements = measurements.size(); Mat matTraining = new Mat(arrayTraining.length / nMeasurements, nMeasurements, CvType.CV_32FC1); matTraining.put(0, 0, arrayTraining); // Parse parameters ParameterList params = getParameterList(); int nHidden = Math.max(2, params.getIntParameterValue("nHidden")); int termIterations = params.getIntParameterValue("termCritMaxIterations"); double termEPS = params.getDoubleParameterValue("termCritEPS"); TermCriteria crit = createTerminationCriteria(termIterations, termEPS); // Create & train the classifier classifier = createClassifier();/*from w w w . ja va2 s . c o m*/ ANN_MLP nnet = (ANN_MLP) classifier; System.out.println(nnet.getLayerSizes()); Mat layers = new Mat(3, 1, CvType.CV_32F); int n = arrayTraining.length / nMeasurements; // layers.put(0, 0, new float[]{nMeasurements, nHidden, pathClasses.size()}); layers.put(0, 0, nMeasurements); layers.put(1, 0, nHidden); // Number of hidden layers layers.put(2, 0, pathClasses.size()); if (crit != null) nnet.setTermCriteria(crit); else crit = nnet.getTermCriteria(); nnet.setLayerSizes(layers); // matResponses.convertTo(matResponses, CvType.CV_32F); Mat matResponses = new Mat(n, pathClasses.size(), CvType.CV_32F); matResponses.setTo(new Scalar(0)); for (int i = 0; i < n; i++) { matResponses.put(i, arrayResponses[i], 1); } nnet.setActivationFunction(ANN_MLP.SIGMOID_SYM, 1, 1); nnet.train(matTraining, Ml.ROW_SAMPLE, matResponses); // lastDescription = getName() + "\n\nMain parameters:\n " + DefaultPluginWorkflowStep.getParameterListJSON(params, "\n ") + "\n\nTermination criteria:\n " + crit.toString(); }