2.神經網路的訓練
int
cvann_mlp::train(
const
mat& inputs,
const
mat& outputs,
const
mat& sampleweights,
const
mat& sampleidx=mat(),
cvann_mlp_trainparams params=cvann_mlp_trainparams(),
int
flags=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 隱含層輸入...