opencv中使用bp神經網路

2021-07-11 10:35:22 字數 1423 閱讀 4372

2.神經網路的訓練

intcvann_mlp::train(constmat& inputs,constmat& outputs,

constmat& sampleweights,constmat& sampleidx=mat(),

cvann_mlp_trainparams params=cvann_mlp_trainparams(),intflags=0 );

1) inputs:輸入矩陣。它儲存了所有訓練樣本的特徵。假設所有樣本總數為nsamples,而我們提取的特徵維數為ndims,

則inputs是乙個nsamples∗ndims的矩陣,每個樣本的特徵佔一行。

2) outputs:輸出矩陣。我們實際在訓練中,我們知道每個樣本所屬的種類,假設一共有nclass類。那麼我們將outputs設定為

乙個nsample*nclass列的矩陣,每一行表示乙個樣本的預期輸出結果,該樣本所屬的那類對應的列設定為1,其他都為0。

比如我們需要識別0-9這10個數字,則總的類數為10類,那麼樣本數字「3」的預期輸出為[0,0,1,0,0,0,0,0,0,0];

3) sampleweights:乙個在使用rprop方法訓練時才需要的資料,所以這裡我們不設定,直接設定為mat()即可。

4) sampleidx:相當於乙個遮罩,它指定哪些行的資料參與訓練。如果設定為mat(),則所有行都參與。

5) params:這個在剛才已經說過了,是訓練相關的引數。

3.神經網路的測試

float

cvann_mlp

::predict

(const

mat&

inputs

,mat

&outputs

)

影象進行特徵提取,把它儲存在inputs裡,通過呼叫predict函式,我們得到乙個輸出向量,它是乙個1*nclass的行向量,

其中每一列說明它與該類的相似程度(0-1之間),也可以說是置信度。

我們只用對output求乙個最大值,就可得到結果。

這個函式的返回值是乙個無用的float值,可以忽略。

BP神經網路

基本bp神經網路演算法包括 訊號的前向傳播 誤差的反向傳播 也即計算實際輸出時按照輸入到輸出的方向進行,權值閾值調整則相反。bp是一種多層前饋神經網路,由輸入層 隱含層和輸出層組成。層與層之間有兩種訊號在流動 一種是從輸入流向輸出的工作訊號,是輸入和權值的函式 另一種是輸入流向輸出的訊號,即誤差。隱...

BP神經網路

x 為輸入向量,y為隱藏層的神經元,z 為輸出層,d為目標真實值,本文預設 z 不經過sigmod處理。x y的權重為 w,y z的權重為 v yj ix iwij 1 oyi f y j 2 其中激勵函式f x 1 1 e x f x f x 1 f x 3 z k j f yj vjk 此時系統...

BP神經網路

bp是back propagation bp神經網路主要的演算法在於誤差反向傳播error backpropagation 有三層 輸入層 input 隱含層 hidden 輸出層 output 輸入層 n個神經元 隱含層 p個神經元 輸出層 q個神經元 輸入向量 x x1,x2,x n 隱含層輸入...