2.神經網絡的訓練
int CvANN_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(constMat&inputs,Mat&outputs)
圖像進行特征提取,把它保存在inputs里,通過調用predict函數,我們得到一個輸出向量,它是一個1*nClass的行向量,
其中每一列說明它與該類的相似程度(0-1之間),也可以說是置信度。我們只用對output求一個最大值,就可得到結果。
這個函數的返回值是一個無用的float值,可以忽略。
