OpenCV 4.13.0
開源計算機視覺庫 (Open Source Computer Vision)
正在載入...
正在搜尋...
未找到匹配項
cv::ml::ANN_MLP 類參考抽象

人工神經網路 - 多層感知器。 更多...

#include <opencv2/ml.hpp>

cv::ml::ANN_MLP 的協作圖

公開型別

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
}
 
- 從 cv::ml::StatModel 繼承的公共型別
enum  標誌 {
  UPDATE_MODEL = 1 ,
  RAW_OUTPUT =1 ,
  COMPRESSED_INPUT =2 ,
  PREPROCESSED_INPUT =4
}
 

公開成員函式

virtual double getAnnealCoolingRatio () const =0
 
virtual double getAnnealFinalT () const =0
 
virtual double getAnnealInitialT () const =0
 
virtual int getAnnealItePerStep () const =0
 
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
 
virtual void setAnnealCoolingRatio (double val)=0
 
virtual void setAnnealEnergyRNG (const RNG &rng)=0
 設定/初始化退火 RNG
 
virtual void setAnnealFinalT (double val)=0
 
virtual void setAnnealInitialT (double val)=0
 
virtual void setAnnealItePerStep (int val)=0
 
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
 
- 從 cv::ml::StatModel 繼承的公共成員函式
virtual float calcError (const Ptr< TrainData > &data, bool test, OutputArray resp) const
 計算訓練集或測試集上的誤差。
 
virtual bool empty () const CV_OVERRIDE
 如果 Algorithm 為空(例如,在最開始或讀取不成功後),則返回 true。
 
virtual int getVarCount () const =0
 返回訓練樣本中的變數數量。
 
virtual bool isClassifier () const =0
 如果模型是分類器,則返回 true。
 
virtual bool isTrained () const =0
 如果模型已訓練,則返回 true。
 
virtual float predict (InputArray samples, OutputArray results=noArray(), int flags=0) const =0
 預測所提供樣本的響應
 
virtual bool train (const Ptr< TrainData > &trainData, int flags=0)
 訓練統計模型。
 
virtual bool train (InputArray samples, int layout, InputArray responses)
 訓練統計模型。
 
- 從 cv::Algorithm 繼承的公共成員函式
 Algorithm ()
 
virtual ~Algorithm ()
 
virtual void clear ()
 清除演算法狀態。
 
virtual String getDefaultName () const
 
virtual void read (const FileNode &fn)
 從檔案儲存中讀取演算法引數。
 
virtual void save (const String &filename) const
 
void write (const Ptr< FileStorage > &fs, const String &name=String()) const
 
virtual void write (FileStorage &fs) const
 將演算法引數儲存在檔案儲存中。
 
void write (FileStorage &fs, const String &name) const
 

靜態公開成員函式

static Ptr< ANN_MLPcreate ()
 建立空模型。
 
static Ptr< ANN_MLPload (const String &filepath)
 從檔案載入並建立一個序列化的 ANN。
 
- 從 cv::ml::StatModel 繼承的靜態公共成員函式
template<typename _Tp >
static Ptr< _Tptrain (const Ptr< TrainData > &data, int flags=0)
 建立並訓練具有預設引數的模型。
 
- 從 cv::Algorithm 繼承的靜態公共成員函式
template<typename _Tp >
static Ptr< _Tpload (const String &filename, const String &objname=String())
 從檔案中載入演算法。
 
template<typename _Tp >
static Ptr< _TploadFromString (const String &strModel, const String &objname=String())
 從字串中載入演算法。
 
template<typename _Tp >
static Ptr< _Tpread (const FileNode &fn)
 從檔案節點中讀取演算法。
 

更多繼承的成員

- 從 cv::Algorithm 繼承的保護成員函式
void writeFormat (FileStorage &fs) const
 

詳細說明

人工神經網路 - 多層感知器。

與 ML 中許多一次性構造和訓練的模型不同,MLP 模型中這些步驟是分開的。首先,使用非預設建構函式或方法 ANN_MLP::create 來建立具有指定拓撲的網路。所有權重都被設定為零。然後,使用一組輸入和輸出向量訓練網路。訓練過程可以重複多次,即可以根據新的訓練資料調整權重。

StatModel::train 的附加標誌可用: ANN_MLP::TrainFlags

另請參閱
神經網路

成員列舉文件

◆ ActivationFunctions

可能的啟用函式

列舉值 (Enumerator)
IDENTITY 

恆等函式: \(f(x)=x\)

SIGMOID_SYM 

對稱 Sigmoid 函式: \(f(x)=\beta*(1-e^{-\alpha x})/(1+e^{-\alpha x})\)

注意
如果您使用的是預設 Sigmoid 啟用函式,引數值為 fparam1=0 和 fparam2=0,則使用的函式是 y = 1.7159*tanh(2/3 * x),因此輸出範圍將是 [-1.7159, 1.7159],而不是 [0,1]。
GAUSSIAN 

高斯函式: \(f(x)=\beta e^{-\alpha x*x}\)

RELU 

ReLU 函式: \(f(x)=max(0,x)\)

LEAKYRELU 

Leaky ReLU 函式: 對於 x>0 \(f(x)=x \) 且 x<=0 \(f(x)=\alpha x \)

◆ TrainFlags

訓練選項

列舉值 (Enumerator)
UPDATE_WEIGHTS 

更新網路權重,而不是從頭計算。在後一種情況下,權重使用 Nguyen-Widrow 演算法進行初始化。

NO_INPUT_SCALE 

不歸一化輸入向量。如果未設定此標誌,訓練演算法將獨立歸一化每個輸入特徵,將其均值移至 0 並使標準差等於 1。如果假定網路會頻繁更新,則新訓練資料可能與原始資料大不相同。在這種情況下,您應注意進行適當的歸一化。

NO_OUTPUT_SCALE 

不歸一化輸出向量。如果未設定標誌,訓練演算法將獨立歸一化每個輸出特徵,方法是根據所使用的啟用函式將其轉換為特定範圍。

◆ TrainingMethods

可用的訓練方法

列舉值 (Enumerator)
BACKPROP 

反向傳播演算法。

RPROP 

RPROP 演算法。詳情請參閱 [232]

ANNEAL 

模擬退火演算法。詳情請參閱 [152]

成員函式說明

◆ create()

static Ptr< ANN_MLP > cv::ml::ANN_MLP::create ( )
static (靜態)
Python
cv.ml.ANN_MLP.create() -> retval
cv.ml.ANN_MLP_create() -> retval

建立空模型。

使用 StatModel::train 訓練模型,使用 Algorithm::load<ANN_MLP>(filename) 載入預訓練模型。請注意,訓練方法具有可選標誌: ANN_MLP::TrainFlags

◆ getAnnealCoolingRatio()

virtual double cv::ml::ANN_MLP::getAnnealCoolingRatio ( ) const
純虛擬函式
Python
cv.ml.ANN_MLP.getAnnealCoolingRatio() -> retval

ANNEAL:更新冷卻率。它必須大於 0 且小於 1。預設值為 0.95。

另請參閱
setAnnealCoolingRatio

◆ getAnnealFinalT()

virtual double cv::ml::ANN_MLP::getAnnealFinalT ( ) const
純虛擬函式
Python
cv.ml.ANN_MLP.getAnnealFinalT() -> retval

ANNEAL:更新最終溫度。它必須大於等於 0 且小於初始溫度。預設值為 0.1。

另請參閱
setAnnealFinalT

◆ getAnnealInitialT()

virtual double cv::ml::ANN_MLP::getAnnealInitialT ( ) const
純虛擬函式
Python
cv.ml.ANN_MLP.getAnnealInitialT() -> retval

ANNEAL:更新初始溫度。它必須大於等於 0。預設值為 10。

另請參閱
setAnnealInitialT

◆ getAnnealItePerStep()

virtual int cv::ml::ANN_MLP::getAnnealItePerStep ( ) const
純虛擬函式
Python
cv.ml.ANN_MLP.getAnnealItePerStep() -> retval

ANNEAL:更新每步迭代次數。它必須大於 0。預設值為 10。

另請參閱
setAnnealItePerStep

◆ getBackpropMomentumScale()

virtual double cv::ml::ANN_MLP::getBackpropMomentumScale ( ) const
純虛擬函式
Python
cv.ml.ANN_MLP.getBackpropMomentumScale() -> retval

BPROP:動量項的強度(前兩次迭代之間權重的差值)。此引數為權重提供一定的慣性以平滑隨機波動。它可以從 0(停用該功能)到 1 或更高。值為 0.1 左右即可。預設值為 0.1。

另請參閱
setBackpropMomentumScale

◆ getBackpropWeightScale()

virtual double cv::ml::ANN_MLP::getBackpropWeightScale ( ) const
純虛擬函式
Python
cv.ml.ANN_MLP.getBackpropWeightScale() -> retval

BPROP:權重梯度項的強度。建議值為 0.1 左右。預設值為 0.1。

另請參閱
setBackpropWeightScale

◆ getLayerSizes()

virtual cv::Mat cv::ml::ANN_MLP::getLayerSizes ( ) const
純虛擬函式
Python
cv.ml.ANN_MLP.getLayerSizes() -> retval

指定每層(包括輸入層和輸出層)神經元數量的整數向量。第一個元素指定輸入層的元素數量。最後一個元素指定輸出層的元素數量。

另請參閱
setLayerSizes

◆ getRpropDW0()

virtual double cv::ml::ANN_MLP::getRpropDW0 ( ) const
純虛擬函式
Python
cv.ml.ANN_MLP.getRpropDW0() -> retval

RPROP:更新值 \(\Delta_0\) 的初始值 \(\Delta_{ij}\)。預設值為 0.1。

另請參閱
setRpropDW0

◆ getRpropDWMax()

virtual double cv::ml::ANN_MLP::getRpropDWMax ( ) const
純虛擬函式
Python
cv.ml.ANN_MLP.getRpropDWMax() -> retval

RPROP:更新值上限 \(\Delta_{max}\)。它必須大於 1。預設值為 50。

另請參閱
setRpropDWMax

◆ getRpropDWMin()

virtual double cv::ml::ANN_MLP::getRpropDWMin ( ) const
純虛擬函式
Python
cv.ml.ANN_MLP.getRpropDWMin() -> retval

RPROP:更新值下限 \(\Delta_{min}\)。它必須為正值。預設值為 FLT_EPSILON。

另請參閱
setRpropDWMin

◆ getRpropDWMinus()

virtual double cv::ml::ANN_MLP::getRpropDWMinus ( ) const
純虛擬函式
Python
cv.ml.ANN_MLP.getRpropDWMinus() -> retval

RPROP:減小因子 \(\eta^-\)。它必須小於 1。預設值為 0.5。

另請參閱
setRpropDWMinus

◆ getRpropDWPlus()

virtual double cv::ml::ANN_MLP::getRpropDWPlus ( ) const
純虛擬函式
Python
cv.ml.ANN_MLP.getRpropDWPlus() -> retval

RPROP:增大因子 \(\eta^+\)。它必須大於 1。預設值為 1.2。

另請參閱
setRpropDWPlus

◆ getTermCriteria()

virtual TermCriteria cv::ml::ANN_MLP::getTermCriteria ( ) const
純虛擬函式
Python
cv.ml.ANN_MLP.getTermCriteria() -> retval

訓練演算法的終止條件。您可以指定最大迭代次數 (maxCount) 和/或在迭代之間為了使演算法繼續進行而必須改變的誤差量 (epsilon)。預設值為 TermCriteria(TermCriteria::MAX_ITER + TermCriteria::EPS, 1000, 0.01)。

另請參閱
setTermCriteria

◆ getTrainMethod()

virtual int cv::ml::ANN_MLP::getTrainMethod ( ) const
純虛擬函式
Python
cv.ml.ANN_MLP.getTrainMethod() -> retval

返回當前的訓練方法

◆ getWeights()

virtual Mat cv::ml::ANN_MLP::getWeights ( int layerIdx) const
純虛擬函式
Python
cv.ml.ANN_MLP.getWeights(layerIdx) -> retval

◆ load()

static Ptr< ANN_MLP > cv::ml::ANN_MLP::load ( const String & filepath)
static (靜態)
Python
cv.ml.ANN_MLP.load(filepath) -> retval
cv.ml.ANN_MLP_load(filepath) -> retval

從檔案載入並建立一個序列化的 ANN。

使用 ANN::save 將 ANN 序列化並存儲到磁碟。透過呼叫此函式並提供檔案路徑,可以再次從該檔案中載入 ANN。

引數
filepath序列化 ANN 的路徑

◆ setActivationFunction()

virtual void cv::ml::ANN_MLP::setActivationFunction ( int type,
double param1=0,
double param2=0 )
純虛擬函式
Python
cv.ml.ANN_MLP.setActivationFunction(type[, param1[, param2]]) -> None

初始化每個神經元的啟用函式。目前,預設且唯一完全支援的啟用函式是 ANN_MLP::SIGMOID_SYM

引數
type啟用函式的型別。請參閱 ANN_MLP::ActivationFunctions
param1啟用函式的第一個引數,\(\alpha\)。預設值為 0。
param2啟用函式的第二個引數,\(\beta\)。預設值為 0。

◆ setAnnealCoolingRatio()

virtual void cv::ml::ANN_MLP::setAnnealCoolingRatio ( double val)
純虛擬函式
Python
cv.ml.ANN_MLP.setAnnealCoolingRatio(val) -> None

另請參閱
getAnnealCoolingRatio

◆ setAnnealEnergyRNG()

virtual void cv::ml::ANN_MLP::setAnnealEnergyRNG ( const RNG & rng)
純虛擬函式

設定/初始化退火 RNG

◆ setAnnealFinalT()

virtual void cv::ml::ANN_MLP::setAnnealFinalT ( double val)
純虛擬函式
Python
cv.ml.ANN_MLP.setAnnealFinalT(val) -> None

另請參閱
getAnnealFinalT

◆ setAnnealInitialT()

virtual void cv::ml::ANN_MLP::setAnnealInitialT ( double val)
純虛擬函式
Python
cv.ml.ANN_MLP.setAnnealInitialT(val) -> None

另請參閱
getAnnealInitialT

◆ setAnnealItePerStep()

virtual void cv::ml::ANN_MLP::setAnnealItePerStep ( int val)
純虛擬函式
Python
cv.ml.ANN_MLP.setAnnealItePerStep(val) -> None

另請參閱
getAnnealItePerStep

◆ setBackpropMomentumScale()

virtual void cv::ml::ANN_MLP::setBackpropMomentumScale ( double val)
純虛擬函式
Python
cv.ml.ANN_MLP.setBackpropMomentumScale(val) -> None

◆ setBackpropWeightScale()

virtual void cv::ml::ANN_MLP::setBackpropWeightScale ( double val)
純虛擬函式
Python
cv.ml.ANN_MLP.setBackpropWeightScale(val) -> None

◆ setLayerSizes()

virtual void cv::ml::ANN_MLP::setLayerSizes ( InputArray _layer_sizes)
純虛擬函式
Python
cv.ml.ANN_MLP.setLayerSizes(_layer_sizes) -> None

指定每層(包括輸入層和輸出層)神經元數量的整數向量。第一個元素指定輸入層的元素數量。最後一個元素指定輸出層的元素數量。預設值為空 Mat

另請參閱
getLayerSizes

◆ setRpropDW0()

virtual void cv::ml::ANN_MLP::setRpropDW0 ( double val)
純虛擬函式
Python
cv.ml.ANN_MLP.setRpropDW0(val) -> None

另請參閱
getRpropDW0

◆ setRpropDWMax()

virtual void cv::ml::ANN_MLP::setRpropDWMax ( double val)
純虛擬函式
Python
cv.ml.ANN_MLP.setRpropDWMax(val) -> None

另請參閱
getRpropDWMax

◆ setRpropDWMin()

virtual void cv::ml::ANN_MLP::setRpropDWMin ( double val)
純虛擬函式
Python
cv.ml.ANN_MLP.setRpropDWMin(val) -> None

另請參閱
getRpropDWMin

◆ setRpropDWMinus()

virtual void cv::ml::ANN_MLP::setRpropDWMinus ( double val)
純虛擬函式
Python
cv.ml.ANN_MLP.setRpropDWMinus(val) -> None

另請參閱
getRpropDWMinus

◆ setRpropDWPlus()

virtual void cv::ml::ANN_MLP::setRpropDWPlus ( double val)
純虛擬函式
Python
cv.ml.ANN_MLP.setRpropDWPlus(val) -> None

另請參閱
getRpropDWPlus

◆ setTermCriteria()

virtual void cv::ml::ANN_MLP::setTermCriteria ( TermCriteria val)
純虛擬函式
Python
cv.ml.ANN_MLP.setTermCriteria(val) -> None

另請參閱
getTermCriteria

◆ setTrainMethod()

virtual void cv::ml::ANN_MLP::setTrainMethod ( int method,
double param1=0,
double param2=0 )
純虛擬函式
Python
cv.ml.ANN_MLP.setTrainMethod(method[, param1[, param2]]) -> None

設定訓練方法和通用引數。

引數
method預設值為 ANN_MLP::RPROP。請參閱 ANN_MLP::TrainingMethods
param1傳遞給 ANN_MLP::RPROP 的 setRpropDW0,傳遞給 ANN_MLP::BACKPROP 的 setBackpropWeightScale,以及傳遞給 ANN_MLP::ANNEAL 的 initialT。
param2傳遞給 ANN_MLP::RPROP 的 setRpropDWMin,傳遞給 ANN_MLP::BACKPROP 的 setBackpropMomentumScale,以及傳遞給 ANN_MLP::ANNEAL 的 finalT。

該類的文件由以下檔案生成: