From 1e14d84008fb26a0fe769b4fbb10069b8c36f1b4 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Sat, 9 Jun 2012 07:05:24 +0000 Subject: [PATCH] possibly fixed crash boost caused by the recent modification; slightly improved mlp params in letter_recog sample --- modules/ml/src/boost.cpp | 2 +- samples/cpp/letter_recog.cpp | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/modules/ml/src/boost.cpp b/modules/ml/src/boost.cpp index ff7120c115..dec8c966af 100644 --- a/modules/ml/src/boost.cpp +++ b/modules/ml/src/boost.cpp @@ -1250,7 +1250,7 @@ CvBoost::update_weights( CvBoostTree* tree ) if( have_subsample ) { float* values = (float*)cur_buf_pos; - cur_buf_pos = (uchar*)(values + data->buf->step); + cur_buf_pos = (uchar*)(values + data->buf->cols); uchar* missing = cur_buf_pos; cur_buf_pos = missing + data->buf->step; CvMat _sample, _mask; diff --git a/samples/cpp/letter_recog.cpp b/samples/cpp/letter_recog.cpp index d006b49c83..dc2cd16841 100644 --- a/samples/cpp/letter_recog.cpp +++ b/samples/cpp/letter_recog.cpp @@ -437,13 +437,20 @@ int build_mlp_classifier( char* data_filename, cvMat( 1, (int)(sizeof(layer_sz)/sizeof(layer_sz[0])), CV_32S, layer_sz ); mlp.create( &layer_sizes ); printf( "Training the classifier (may take a few minutes)...\n"); - mlp.train( &train_data, new_responses, 0, 0, - CvANN_MLP_TrainParams(cvTermCriteria(CV_TERMCRIT_ITER,300,0.01), + #if 1 - CvANN_MLP_TrainParams::BACKPROP,0.001)); + int method = CvANN_MLP_TrainParams::BACKPROP; + double method_param = 0.001; + int max_iter = 300; #else - CvANN_MLP_TrainParams::RPROP,0.05)); + int method = CvANN_MLP_TrainParams::RPROP; + double method_param = 0.1; + int max_iter = 1000; #endif + + mlp.train( &train_data, new_responses, 0, 0, + CvANN_MLP_TrainParams(cvTermCriteria(CV_TERMCRIT_ITER,max_iter,0.01), + method, method_param)); cvReleaseMat( &new_responses ); printf("\n"); }