Example usage for org.opencv.ml ANN_MLP setActivationFunction

List of usage examples for org.opencv.ml ANN_MLP setActivationFunction

Introduction

In this page you can find the example usage for org.opencv.ml ANN_MLP setActivationFunction.

Prototype

public void setActivationFunction(int type, double param1, double param2) 

Source Link

Usage

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  ww w  .  j av a  2  s  . c  om*/
    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();
}