OpenCV: cv::ml::ANN_MLP Class Reference

| OpenCV 3.4.2 Open Source Computer Vision

Public Types | Public Member Functions | Static Public Member Functions | List of all members
cv::ml::ANN_MLP Class Referenceabstract
Machine Learning

Artificial Neural Networks - Multi-Layer Perceptrons. More...

`#include "ml.hpp"`

Inheritance diagram for cv::ml::ANN_MLP:

## Public Types
enum | ActivationFunctions { IDENTITY = 0, SIGMOID_SYM = 1, GAUSSIAN = 2, RELU = 3, LEAKYRELU = 4 }
enum | TrainFlags { UPDATE_WEIGHTS = 1, NO_INPUT_SCALE = 2, NO_OUTPUT_SCALE = 4 }
enum | TrainingMethods { BACKPROP =0, RPROP = 1, ANNEAL = 2 }
Public Types inherited from cv::ml::StatModel
enum | Flags { UPDATE_MODEL = 1, RAW_OUTPUT =1, COMPRESSED_INPUT =2, PREPROCESSED_INPUT =4 }

## Public Member Functions
double | getAnnealCoolingRatio () const
double | getAnnealFinalT () const
double | getAnnealInitialT () const
int | getAnnealItePerStep () const
virtual double | getBackpropMomentumScale () const =0
virtual double | getBackpropWeightScale () const =0
virtual cv::Mat | getLayerSizes () const =0
virtual double | getRpropDW0 () const =0
virtual double | getRpropDWMax () const =0
virtual double | getRpropDWMin () const =0
virtual double | getRpropDWMinus () const =0
virtual double | getRpropDWPlus () const =0
virtual TermCriteria | getTermCriteria () const =0
virtual int | getTrainMethod () const =0
virtual Mat | getWeights (int layerIdx) const =0
virtual void | setActivationFunction (int type, double param1=0, double param2=0)=0
void | setAnnealCoolingRatio (double val)
void | setAnnealEnergyRNG (const RNG &rng)
| Set/initialize anneal RNG. More...
void | setAnnealFinalT (double val)
void | setAnnealInitialT (double val)
void | setAnnealItePerStep (int val)
virtual void | setBackpropMomentumScale (double val)=0
virtual void | setBackpropWeightScale (double val)=0
virtual void | setLayerSizes (InputArray _layer_sizes)=0
virtual void | setRpropDW0 (double val)=0
virtual void | setRpropDWMax (double val)=0
virtual void | setRpropDWMin (double val)=0
virtual void | setRpropDWMinus (double val)=0
virtual void | setRpropDWPlus (double val)=0
virtual void | setTermCriteria (TermCriteria val)=0
virtual void | setTrainMethod (int method, double param1=0, double param2=0)=0
Public Member Functions inherited from cv::ml::StatModel
virtual float | calcError (const Ptr< TrainData > &data, bool test, OutputArray resp) const
| Computes error on the training or test dataset. More...
virtual bool | empty () const CV_OVERRIDE
| Returns true if the Algorithm is empty (e.g. in the very beginning or after unsuccessful read. More...
virtual int | getVarCount () const =0
| Returns the number of variables in training samples. More...
virtual bool | isClassifier () const =0
| Returns true if the model is classifier. More...
virtual bool | isTrained () const =0
| Returns true if the model is trained. More...
virtual float | predict (InputArray samples, OutputArray results=noArray(), int flags=0) const =0
| Predicts response(s) for the provided sample(s) More...
virtual bool | train (const Ptr< TrainData > &trainData, int flags=0)
| Trains the statistical model. More...
virtual bool | train (InputArray samples, int layout, InputArray responses)
| Trains the statistical model. More...
Public Member Functions inherited from cv::Algorithm
| Algorithm ()
virtual | ~Algorithm ()
virtual void | clear ()
| Clears the algorithm state. More...
virtual String | getDefaultName () const
virtual void | read (const FileNode &fn)
| Reads algorithm parameters from a file storage. More...
virtual void | save (const String &filename) const
virtual void | write (FileStorage &fs) const
| Stores algorithm parameters in a file storage. More...
void | write (const Ptr< FileStorage > &fs, const String &name=String()) const
| simplified API for language bindings This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...

## Static Public Member Functions
static Ptr< ANN_MLP > | create ()
| Creates empty model. More...
static Ptr< ANN_MLP > | load (const String &filepath)
| Loads and creates a serialized ANN from a file. More...
Static Public Member Functions inherited from cv::ml::StatModel
template<typename _Tp >
static Ptr< _Tp > | train (const Ptr< TrainData > &data, int flags=0)
| Create and train model with default parameters. More...
Static Public Member Functions inherited from cv::Algorithm
template<typename _Tp >
static Ptr< _Tp > | load (const String &filename, const String &objname=String())
| Loads algorithm from the file. More...
template<typename _Tp >
static Ptr< _Tp > | loadFromString (const String &strModel, const String &objname=String())
| Loads algorithm from a String. More...
template<typename _Tp >
static Ptr< _Tp > | read (const FileNode &fn)
| Reads algorithm from the file node. More...

## Additional Inherited Members
Protected Member Functions inherited from cv::Algorithm
void | writeFormat (FileStorage &fs) const

## Detailed Description

Artificial Neural Networks - Multi-Layer Perceptrons.

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 ANN_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.

Additional flags for StatModel::train are available: ANN_MLP::TrainFlags.

See also
  Neural Networks

## Member Enumeration Documentation

## ◆ ActivationFunctions

enum cv::ml::ANN_MLP::ActivationFunctions

possible activation functions

Enumerator
IDENTITY | Identity function: \(f(x)=x\)
SIGMOID_SYM | Symmetrical sigmoid: \(f(x)=\beta*(1-e^{-\alpha x})/(1+e^{-\alpha x})\) Note If you are using the default sigmoid 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].
GAUSSIAN | Gaussian function: \(f(x)=\beta e^{-\alpha x*x}\)
RELU | ReLU function: \(f(x)=max(0,x)\)
LEAKYRELU | Leaky ReLU function: for x>0 \(f(x)=x \) and x<=0 \(f(x)=\alpha x \)

## ◆ TrainFlags

enum cv::ml::ANN_MLP::TrainFlags

Train options

Enumerator
UPDATE_WEIGHTS | Update the network weights, rather than compute them from scratch. In the latter case the weights are initialized using the Nguyen-Widrow algorithm.
NO_INPUT_SCALE | Do 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.
NO_OUTPUT_SCALE | Do 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.

## ◆ TrainingMethods

enum cv::ml::ANN_MLP::TrainingMethods

Available training methods

Enumerator
BACKPROP | The back-propagation algorithm.
RPROP | The RPROP algorithm. See [RPROP93] for details.
ANNEAL | The simulated annealing algorithm. See [Kirkpatrick83] for details.

## Member Function Documentation

## ◆ create()

static Ptr<ANN_MLP> cv::ml::ANN_MLP::create | ( |  | ) |
| static

Creates empty model.

Use StatModel::train to train the model, Algorithm::load<ANN_MLP>(filename) to load the pre-trained model. Note that the train method has optional flags: ANN_MLP::TrainFlags.

## ◆ getAnnealCoolingRatio()

double cv::ml::ANN_MLP::getAnnealCoolingRatio | ( |  | ) | const

ANNEAL: Update cooling ratio. It must be >0 and less than 1. Default value is 0.95.

See also
  setAnnealCoolingRatio

## ◆ getAnnealFinalT()

double cv::ml::ANN_MLP::getAnnealFinalT | ( |  | ) | const

ANNEAL: Update final temperature. It must be >=0 and less than initialT. Default value is 0.1.

See also
  setAnnealFinalT

## ◆ getAnnealInitialT()

double cv::ml::ANN_MLP::getAnnealInitialT | ( |  | ) | const

ANNEAL: Update initial temperature. It must be >=0. Default value is 10.

See also
  setAnnealInitialT

## ◆ getAnnealItePerStep()

int cv::ml::ANN_MLP::getAnnealItePerStep | ( |  | ) | const

ANNEAL: Update iteration per step. It must be >0 . Default value is 10.

See also
  setAnnealItePerStep

## ◆ getBackpropMomentumScale()

virtual double cv::ml::ANN_MLP::getBackpropMomentumScale | ( |  | ) | const
| pure virtual

BPROP: Strength of the momentum term (the difference between weights on the 2 previous iterations). This parameter provides some inertia to smooth the random fluctuations of the weights. It can vary from 0 (the feature is disabled) to 1 and beyond. The value 0.1 or so is good enough. Default value is 0.1.

See also
  setBackpropMomentumScale

## ◆ getBackpropWeightScale()

virtual double cv::ml::ANN_MLP::getBackpropWeightScale | ( |  | ) | const
| pure virtual

BPROP: Strength of the weight gradient term. The recommended value is about 0.1. Default value is 0.1.

See also
  setBackpropWeightScale

## ◆ getLayerSizes()

virtual cv::Mat cv::ml::ANN_MLP::getLayerSizes | ( |  | ) | const
| pure virtual

Integer vector specifying the number of neurons in each layer including the input and output layers. The very first element specifies the number of elements in the input layer. The last element - number of elements in the output layer.

See also
  setLayerSizes

## ◆ getRpropDW0()

virtual double cv::ml::ANN_MLP::getRpropDW0 | ( |  | ) | const
| pure virtual

RPROP: Initial value \(\Delta_0\) of update-values \(\Delta_{ij}\). Default value is 0.1.

See also
  setRpropDW0

## ◆ getRpropDWMax()

virtual double cv::ml::ANN_MLP::getRpropDWMax | ( |  | ) | const
| pure virtual

RPROP: Update-values upper limit \(\Delta_{max}\). It must be >1. Default value is 50.

See also
  setRpropDWMax

## ◆ getRpropDWMin()

virtual double cv::ml::ANN_MLP::getRpropDWMin | ( |  | ) | const
| pure virtual

RPROP: Update-values lower limit \(\Delta_{min}\). It must be positive. Default value is FLT_EPSILON.

See also
  setRpropDWMin

## ◆ getRpropDWMinus()

virtual double cv::ml::ANN_MLP::getRpropDWMinus | ( |  | ) | const
| pure virtual

RPROP: Decrease factor \(\eta^-\). It must be <1. Default value is 0.5.

See also
  setRpropDWMinus

## ◆ getRpropDWPlus()

virtual double cv::ml::ANN_MLP::getRpropDWPlus | ( |  | ) | const
| pure virtual

RPROP: Increase factor \(\eta^+\). It must be >1. Default value is 1.2.

See also
  setRpropDWPlus

## ◆ getTermCriteria()

virtual TermCriteria cv::ml::ANN_MLP::getTermCriteria | ( |  | ) | const
| pure virtual

Termination criteria of the training algorithm. You can specify the maximum number of iterations (maxCount) and/or how much the error could change between the iterations to make the algorithm continue (epsilon). Default value is TermCriteria(TermCriteria::MAX_ITER + TermCriteria::EPS, 1000, 0.01).

See also
  setTermCriteria

## ◆ getTrainMethod()

virtual int cv::ml::ANN_MLP::getTrainMethod | ( |  | ) | const
| pure virtual

Returns current training method

## ◆ getWeights()

virtual Mat cv::ml::ANN_MLP::getWeights | ( | int | layerIdx | ) | const
| pure virtual

## ◆ load()

static Ptr<ANN_MLP> cv::ml::ANN_MLP::load | ( | const String & | filepath | ) |
| static

Loads and creates a serialized ANN from a file.

Use ANN::save to serialize and store an ANN to disk. Load the ANN from this file again, by calling this function with the path to the file.

Parameters

  filepath | path to serialized ANN

## ◆ setActivationFunction()

virtual void cv::ml::ANN_MLP::setActivationFunction | ( | int | type,
|  | double | param1 = `0`,
|  | double | param2 = `0`
| ) |  |
| pure virtual

Initialize the activation function for each neuron. Currently the default and the only fully supported activation function is ANN_MLP::SIGMOID_SYM.

Parameters

  type | The type of activation function. See ANN_MLP::ActivationFunctions.
  param1 | The first parameter of the activation function, \(\alpha\). Default value is 0.
  param2 | The second parameter of the activation function, \(\beta\). Default value is 0.

## ◆ setAnnealCoolingRatio()

void cv::ml::ANN_MLP::setAnnealCoolingRatio | ( | double | val | ) |

See also
  getAnnealCoolingRatio

## ◆ setAnnealEnergyRNG()

void cv::ml::ANN_MLP::setAnnealEnergyRNG | ( | const RNG & | rng | ) |

Set/initialize anneal RNG.

## ◆ setAnnealFinalT()

void cv::ml::ANN_MLP::setAnnealFinalT | ( | double | val | ) |

See also
  getAnnealFinalT

## ◆ setAnnealInitialT()

void cv::ml::ANN_MLP::setAnnealInitialT | ( | double | val | ) |

See also
  getAnnealInitialT

## ◆ setAnnealItePerStep()

void cv::ml::ANN_MLP::setAnnealItePerStep | ( | int | val | ) |

See also
  getAnnealItePerStep

## ◆ setBackpropMomentumScale()

virtual void cv::ml::ANN_MLP::setBackpropMomentumScale | ( | double | val | ) |
| pure virtual

See also
  getBackpropMomentumScale

## ◆ setBackpropWeightScale()

virtual void cv::ml::ANN_MLP::setBackpropWeightScale | ( | double | val | ) |
| pure virtual

See also
  getBackpropWeightScale

## ◆ setLayerSizes()

virtual void cv::ml::ANN_MLP::setLayerSizes | ( | InputArray | _layer_sizes | ) |
| pure virtual

Integer vector specifying the number of neurons in each layer including the input and output layers. The very first element specifies the number of elements in the input layer. The last element - number of elements in the output layer. Default value is empty Mat.

See also
  getLayerSizes

## ◆ setRpropDW0()

virtual void cv::ml::ANN_MLP::setRpropDW0 | ( | double | val | ) |
| pure virtual

See also
  getRpropDW0

## ◆ setRpropDWMax()

virtual void cv::ml::ANN_MLP::setRpropDWMax | ( | double | val | ) |
| pure virtual

See also
  getRpropDWMax

## ◆ setRpropDWMin()

virtual void cv::ml::ANN_MLP::setRpropDWMin | ( | double | val | ) |
| pure virtual

See also
  getRpropDWMin

## ◆ setRpropDWMinus()

virtual void cv::ml::ANN_MLP::setRpropDWMinus | ( | double | val | ) |
| pure virtual

See also
  getRpropDWMinus

## ◆ setRpropDWPlus()

virtual void cv::ml::ANN_MLP::setRpropDWPlus | ( | double | val | ) |
| pure virtual

See also
  getRpropDWPlus

## ◆ setTermCriteria()

virtual void cv::ml::ANN_MLP::setTermCriteria | ( | TermCriteria | val | ) |
| pure virtual

See also
  getTermCriteria

## ◆ setTrainMethod()

virtual void cv::ml::ANN_MLP::setTrainMethod | ( | int | method,
|  | double | param1 = `0`,
|  | double | param2 = `0`
| ) |  |
| pure virtual

Sets training method and common parameters.

Parameters

  method | Default value is ANN_MLP::RPROP. See ANN_MLP::TrainingMethods.
  param1 | passed to setRpropDW0 for ANN_MLP::RPROP and to setBackpropWeightScale for ANN_MLP::BACKPROP and to initialT for ANN_MLP::ANNEAL.
  param2 | passed to setRpropDWMin for ANN_MLP::RPROP and to setBackpropMomentumScale for ANN_MLP::BACKPROP and to finalT for ANN_MLP::ANNEAL.

The documentation for this class was generated from the following file:

- ml/include/opencv2/ml.hpp