2013-07-11 49 views
2

我所知道的列車在OpenCV的多層神經網絡的唯一方法迭代:OpenCV的神經網絡訓練一次一個

CvANN_MLP network; 
.... 
network.train(input, output, Mat(), Mat(), params, flags); 

但這不會打印出任何有意義的調試(如迭代計算,電流誤差,...),程序只會坐在那裏直到完成訓練,如果數據集是千兆字節,那麼非常麻煩,我無法看到進度。

如何一次訓練網絡一次迭代,或者在訓練時打印一些調試?

+0

不幸的是,我還沒有找到它可能...我試圖找出它在LBPH臉部識別器上做了一個星期的工作,但是這些功能只是不會顯示出來。 – Manas

回答

1

問題沒有解決,但問題解決了。答:就目前的OpenCV版本而言,這是不可能的。

0

根據http://opencv.willowgarage.com/documentation/cpp/ml_neural_networks.html#cvann-mlp-train params參數是類型cvANN_MLP_TrainParams。該類包含一個TermCriteria屬性,用於控制訓練函數何時終止。該終止標準類http://opencv.willowgarage.com/documentation/cpp/basic_structures.html可以設置爲在給定次數的迭代後或當給定的ε條件滿足或兩者的某種組合時終止。我還沒有使用的訓練功能自己,所以我不知道你會使用,使這項工作的代碼,但這樣的事情應該限制就像我說的訓練週期

CvANN_MLP_TrainParams params = CvANN_MLP_TrainParams() 

params.term_crit.type = 1;//This should tell the train function you want to terminate on number of iterations 
params.term_crit.maxCount = 1;//Termination after one iteration might be max_iter instead of maxCount 

network.train(input, output, Mat(),Mat(), params, flags) 

的數量我的避風港」與openCV一起工作,但閱讀過這樣的文檔應該可以工作。

+0

我的確嘗試過這種方法,但是無法恢復訓練(即使保存並加載了重量),也無法找到解決當前錯誤的方法。 –

+0

您可以添加您沿着這些線路嘗試的細節以及它失敗的方式嗎? –

+0

如果此評論表單允許嵌入代碼,我會。無論如何,它不會失敗,只是不可能得到當前的錯誤,最重要的信息。 –

1

您是否正在設置UPDATE_WEIGHTS標誌?

您可以通過讓ANN預測訓練集中每個樣本的結果向量來測試錯誤。