// Copyright (C) 2008 Davis E. King (davis@dlib.net) // License: Boost Software License See LICENSE.txt for the full license. #undef DLIB_SVm_THREADED_ABSTRACT_ #ifdef DLIB_SVm_THREADED_ABSTRACT_ #include "../matrix/matrix_abstract.h" #include "../algs.h" #include "../svm.h" namespace dlib { // ---------------------------------------------------------------------------------------- template < typename trainer_type, typename in_sample_vector_type, typename in_scalar_vector_type > const matrix<typename trainer_type::scalar_type, 1, 2, typename trainer_type::mem_manager_type> cross_validate_trainer_threaded ( const trainer_type& trainer, const in_sample_vector_type& x, const in_scalar_vector_type& y, const long folds, const long num_threads ); /*! requires - is_binary_classification_problem(x,y) == true - 1 < folds <= std::min(sum(y>0),sum(y<0)) (e.g. There must be at least as many examples of each class as there are folds) - trainer_type == some kind of trainer object (e.g. svm_nu_trainer) - num_threads > 0 - It must be safe for multiple trainer objects to access the elements of x from multiple threads at the same time. Note that all trainers and kernels in dlib are thread safe in this regard since they do not mutate the elements of x. ensures - performs k-fold cross validation by using the given trainer to solve the given binary classification problem for the given number of folds. Each fold is tested using the output of the trainer and the average classification accuracy from all folds is returned. - uses num_threads threads of execution in doing the cross validation. - The accuracy is returned in a row vector, let us call it R. Both quantities in R are numbers between 0 and 1 which represent the fraction of examples correctly classified. R(0) is the fraction of +1 examples correctly classified and R(1) is the fraction of -1 examples correctly classified. - The number of folds used is given by the folds argument. throws - any exceptions thrown by trainer.train() - std::bad_alloc !*/ // ---------------------------------------------------------------------------------------- } #endif // DLIB_SVm_THREADED_ABSTRACT_