// // This file is auto-generated. Please don't modify it! // package org.opencv.ml; import org.opencv.core.Mat; // C++: class CvANN_MLP /** * <p>MLP model.</p> * * <p>Unlike many other models in ML that are constructed and trained at once, in * the MLP model these steps are separated. First, a network with the specified * topology is created using the non-default constructor or the method * "CvANN_MLP.create". All the weights are set to zeros. Then, the network is * trained using a set of input and output vectors. The training procedure can * be repeated more than once, that is, the weights can be adjusted based on the * new training data.</p> * * @see <a href="http://docs.opencv.org/modules/ml/doc/neural_networks.html#cvann-mlp">org.opencv.ml.CvANN_MLP : public CvStatModel</a> */ public class CvANN_MLP extends CvStatModel { protected CvANN_MLP(long addr) { super(addr); } public static final int IDENTITY = 0, SIGMOID_SYM = 1, GAUSSIAN = 2, UPDATE_WEIGHTS = 1, NO_INPUT_SCALE = 2, NO_OUTPUT_SCALE = 4; // // C++: CvANN_MLP::CvANN_MLP() // /** * <p>The constructors.</p> * * <p>The advanced constructor allows to create MLP with the specified topology. * See "CvANN_MLP.create" for details.</p> * * @see <a href="http://docs.opencv.org/modules/ml/doc/neural_networks.html#cvann-mlp-cvann-mlp">org.opencv.ml.CvANN_MLP.CvANN_MLP</a> */ public CvANN_MLP() { super( CvANN_MLP_0() ); return; } // // C++: CvANN_MLP::CvANN_MLP(Mat layerSizes, int activateFunc = CvANN_MLP::SIGMOID_SYM, double fparam1 = 0, double fparam2 = 0) // /** * <p>The constructors.</p> * * <p>The advanced constructor allows to create MLP with the specified topology. * See "CvANN_MLP.create" for details.</p> * * @param layerSizes a layerSizes * @param activateFunc a activateFunc * @param fparam1 a fparam1 * @param fparam2 a fparam2 * * @see <a href="http://docs.opencv.org/modules/ml/doc/neural_networks.html#cvann-mlp-cvann-mlp">org.opencv.ml.CvANN_MLP.CvANN_MLP</a> */ public CvANN_MLP(Mat layerSizes, int activateFunc, double fparam1, double fparam2) { super( CvANN_MLP_1(layerSizes.nativeObj, activateFunc, fparam1, fparam2) ); return; } /** * <p>The constructors.</p> * * <p>The advanced constructor allows to create MLP with the specified topology. * See "CvANN_MLP.create" for details.</p> * * @param layerSizes a layerSizes * * @see <a href="http://docs.opencv.org/modules/ml/doc/neural_networks.html#cvann-mlp-cvann-mlp">org.opencv.ml.CvANN_MLP.CvANN_MLP</a> */ public CvANN_MLP(Mat layerSizes) { super( CvANN_MLP_2(layerSizes.nativeObj) ); return; } // // C++: void CvANN_MLP::clear() // public void clear() { clear_0(nativeObj); return; } // // C++: void CvANN_MLP::create(Mat layerSizes, int activateFunc = CvANN_MLP::SIGMOID_SYM, double fparam1 = 0, double fparam2 = 0) // /** * <p>Constructs MLP with the specified topology.</p> * * <p>The method creates an MLP network with the specified topology and assigns the * same activation function to all the neurons.</p> * * @param layerSizes Integer vector specifying the number of neurons in each * layer including the input and output layers. * @param activateFunc Parameter specifying the activation function for each * neuron: one of <code>CvANN_MLP.IDENTITY</code>, <code>CvANN_MLP.SIGMOID_SYM</code>, * and <code>CvANN_MLP.GAUSSIAN</code>. * @param fparam1 Free parameter of the activation function, <em>alpha</em>. See * the formulas in the introduction section. * @param fparam2 Free parameter of the activation function, <em>beta</em>. See * the formulas in the introduction section. * * @see <a href="http://docs.opencv.org/modules/ml/doc/neural_networks.html#cvann-mlp-create">org.opencv.ml.CvANN_MLP.create</a> */ public void create(Mat layerSizes, int activateFunc, double fparam1, double fparam2) { create_0(nativeObj, layerSizes.nativeObj, activateFunc, fparam1, fparam2); return; } /** * <p>Constructs MLP with the specified topology.</p> * * <p>The method creates an MLP network with the specified topology and assigns the * same activation function to all the neurons.</p> * * @param layerSizes Integer vector specifying the number of neurons in each * layer including the input and output layers. * * @see <a href="http://docs.opencv.org/modules/ml/doc/neural_networks.html#cvann-mlp-create">org.opencv.ml.CvANN_MLP.create</a> */ public void create(Mat layerSizes) { create_1(nativeObj, layerSizes.nativeObj); return; } // // C++: float CvANN_MLP::predict(Mat inputs, Mat& outputs) // /** * <p>Predicts responses for input samples.</p> * * <p>The method returns a dummy value which should be ignored.</p> * * <p>If you are using the default <code>cvANN_MLP.SIGMOID_SYM</code> activation * function with the default parameter values fparam1=0 and fparam2=0 then the * function used is y = 1.7159*tanh(2/3 * x), so the output will range from * [-1.7159, 1.7159], instead of [0,1].</p> * * @param inputs Input samples. * @param outputs Predicted responses for corresponding samples. * * @see <a href="http://docs.opencv.org/modules/ml/doc/neural_networks.html#cvann-mlp-predict">org.opencv.ml.CvANN_MLP.predict</a> */ public float predict(Mat inputs, Mat outputs) { float retVal = predict_0(nativeObj, inputs.nativeObj, outputs.nativeObj); return retVal; } // // C++: int CvANN_MLP::train(Mat inputs, Mat outputs, Mat sampleWeights, Mat sampleIdx = cv::Mat(), CvANN_MLP_TrainParams params = CvANN_MLP_TrainParams(), int flags = 0) // /** * <p>Trains/updates MLP.</p> * * <p>This method applies the specified training algorithm to computing/adjusting * the network weights. It returns the number of done iterations.</p> * * <p>The RPROP training algorithm is parallelized with the TBB library.</p> * * <p>If you are using the default <code>cvANN_MLP.SIGMOID_SYM</code> activation * function then the output should be in the range [-1,1], instead of [0,1], for * optimal results.</p> * * @param inputs Floating-point matrix of input vectors, one vector per row. * @param outputs Floating-point matrix of the corresponding output vectors, one * vector per row. * @param sampleWeights (RPROP only) Optional floating-point vector of weights * for each sample. Some samples may be more important than others for training. * You may want to raise the weight of certain classes to find the right balance * between hit-rate and false-alarm rate, and so on. * @param sampleIdx Optional integer vector indicating the samples (rows of * <code>inputs</code> and <code>outputs</code>) that are taken into account. * @param params Training parameters. See the "CvANN_MLP_TrainParams" * description. * @param flags Various parameters to control the training algorithm. A * combination of the following parameters is possible: * <ul> * <li> UPDATE_WEIGHTS Algorithm updates the network weights, rather than * computes them from scratch. In the latter case the weights are initialized * using the Nguyen-Widrow algorithm. * <li> NO_INPUT_SCALE Algorithm does not normalize the input vectors. If this * flag is not set, the training algorithm normalizes each input feature * independently, shifting its mean value to 0 and making the standard deviation * equal to 1. If the network is assumed to be updated frequently, the new * training data could be much different from original one. In this case, you * should take care of proper normalization. * <li> NO_OUTPUT_SCALE Algorithm does not normalize the output vectors. If * the flag is not set, the training algorithm normalizes each output feature * independently, by transforming it to the certain range depending on the used * activation function. * </ul> * * @see <a href="http://docs.opencv.org/modules/ml/doc/neural_networks.html#cvann-mlp-train">org.opencv.ml.CvANN_MLP.train</a> */ public int train(Mat inputs, Mat outputs, Mat sampleWeights, Mat sampleIdx, CvANN_MLP_TrainParams params, int flags) { int retVal = train_0(nativeObj, inputs.nativeObj, outputs.nativeObj, sampleWeights.nativeObj, sampleIdx.nativeObj, params.nativeObj, flags); return retVal; } /** * <p>Trains/updates MLP.</p> * * <p>This method applies the specified training algorithm to computing/adjusting * the network weights. It returns the number of done iterations.</p> * * <p>The RPROP training algorithm is parallelized with the TBB library.</p> * * <p>If you are using the default <code>cvANN_MLP.SIGMOID_SYM</code> activation * function then the output should be in the range [-1,1], instead of [0,1], for * optimal results.</p> * * @param inputs Floating-point matrix of input vectors, one vector per row. * @param outputs Floating-point matrix of the corresponding output vectors, one * vector per row. * @param sampleWeights (RPROP only) Optional floating-point vector of weights * for each sample. Some samples may be more important than others for training. * You may want to raise the weight of certain classes to find the right balance * between hit-rate and false-alarm rate, and so on. * * @see <a href="http://docs.opencv.org/modules/ml/doc/neural_networks.html#cvann-mlp-train">org.opencv.ml.CvANN_MLP.train</a> */ public int train(Mat inputs, Mat outputs, Mat sampleWeights) { int retVal = train_1(nativeObj, inputs.nativeObj, outputs.nativeObj, sampleWeights.nativeObj); return retVal; } @Override protected void finalize() throws Throwable { delete(nativeObj); } // C++: CvANN_MLP::CvANN_MLP() private static native long CvANN_MLP_0(); // C++: CvANN_MLP::CvANN_MLP(Mat layerSizes, int activateFunc = CvANN_MLP::SIGMOID_SYM, double fparam1 = 0, double fparam2 = 0) private static native long CvANN_MLP_1(long layerSizes_nativeObj, int activateFunc, double fparam1, double fparam2); private static native long CvANN_MLP_2(long layerSizes_nativeObj); // C++: void CvANN_MLP::clear() private static native void clear_0(long nativeObj); // C++: void CvANN_MLP::create(Mat layerSizes, int activateFunc = CvANN_MLP::SIGMOID_SYM, double fparam1 = 0, double fparam2 = 0) private static native void create_0(long nativeObj, long layerSizes_nativeObj, int activateFunc, double fparam1, double fparam2); private static native void create_1(long nativeObj, long layerSizes_nativeObj); // C++: float CvANN_MLP::predict(Mat inputs, Mat& outputs) private static native float predict_0(long nativeObj, long inputs_nativeObj, long outputs_nativeObj); // C++: int CvANN_MLP::train(Mat inputs, Mat outputs, Mat sampleWeights, Mat sampleIdx = cv::Mat(), CvANN_MLP_TrainParams params = CvANN_MLP_TrainParams(), int flags = 0) private static native int train_0(long nativeObj, long inputs_nativeObj, long outputs_nativeObj, long sampleWeights_nativeObj, long sampleIdx_nativeObj, long params_nativeObj, int flags); private static native int train_1(long nativeObj, long inputs_nativeObj, long outputs_nativeObj, long sampleWeights_nativeObj); // native support for java finalize() private static native void delete(long nativeObj); }