From d3a3288ef46869ee5109aeb423e9ba5d8540edb8 Mon Sep 17 00:00:00 2001 From: Davis King Date: Tue, 5 May 2015 18:01:52 -0400 Subject: [PATCH] Added a max iterations option to the sequence labeling and segmentation learning tools. --- .../svm/structural_sequence_labeling_trainer.h | 13 +++++++++++++ ...ctural_sequence_labeling_trainer_abstract.h | 18 ++++++++++++++++++ .../structural_sequence_segmentation_trainer.h | 10 ++++++++++ ...al_sequence_segmentation_trainer_abstract.h | 18 ++++++++++++++++++ 4 files changed, 59 insertions(+) diff --git a/dlib/svm/structural_sequence_labeling_trainer.h b/dlib/svm/structural_sequence_labeling_trainer.h index 72795daed..9b61fd6c2 100644 --- a/dlib/svm/structural_sequence_labeling_trainer.h +++ b/dlib/svm/structural_sequence_labeling_trainer.h @@ -76,6 +76,16 @@ namespace dlib double get_epsilon ( ) const { return eps; } + unsigned long get_max_iterations ( + ) const { return max_iterations; } + + void set_max_iterations ( + unsigned long max_iter + ) + { + max_iterations = max_iter; + } + void set_max_cache_size ( unsigned long max_size ) @@ -215,6 +225,7 @@ namespace dlib prob.be_verbose(); prob.set_epsilon(eps); + prob.set_max_iterations(max_iterations); prob.set_c(C); prob.set_max_cache_size(max_cache_size); for (unsigned long i = 0; i < loss_values.size(); ++i) @@ -230,6 +241,7 @@ namespace dlib double C; oca solver; double eps; + unsigned long max_iterations; bool verbose; unsigned long num_threads; unsigned long max_cache_size; @@ -240,6 +252,7 @@ namespace dlib C = 100; verbose = false; eps = 0.1; + max_iterations = 10000; num_threads = 2; max_cache_size = 5; loss_values.assign(num_labels(), 1); diff --git a/dlib/svm/structural_sequence_labeling_trainer_abstract.h b/dlib/svm/structural_sequence_labeling_trainer_abstract.h index e53cd9ae2..43e5f5131 100644 --- a/dlib/svm/structural_sequence_labeling_trainer_abstract.h +++ b/dlib/svm/structural_sequence_labeling_trainer_abstract.h @@ -47,6 +47,7 @@ namespace dlib - #get_c() == 100 - this object isn't verbose - #get_epsilon() == 0.1 + - #get_max_iterations() == 10000 - #get_num_threads() == 2 - #get_max_cache_size() == 5 - #get_feature_extractor() == a default initialized feature_extractor @@ -60,6 +61,7 @@ namespace dlib - #get_c() == 100 - this object isn't verbose - #get_epsilon() == 0.1 + - #get_max_iterations() == 10000 - #get_num_threads() == 2 - #get_max_cache_size() == 5 - #get_feature_extractor() == fe @@ -119,6 +121,22 @@ namespace dlib training sample is within epsilon of its optimal value". !*/ + void set_max_iterations ( + unsigned long max_iter + ); + /*! + ensures + - #get_max_iterations() == max_iter + !*/ + + unsigned long get_max_iterations ( + ); + /*! + ensures + - returns the maximum number of iterations the SVM optimizer is allowed to + run before it is required to stop and return a result. + !*/ + void set_max_cache_size ( unsigned long max_size ); diff --git a/dlib/svm/structural_sequence_segmentation_trainer.h b/dlib/svm/structural_sequence_segmentation_trainer.h index 20d342238..2e0214008 100644 --- a/dlib/svm/structural_sequence_segmentation_trainer.h +++ b/dlib/svm/structural_sequence_segmentation_trainer.h @@ -72,6 +72,16 @@ namespace dlib double get_epsilon ( ) const { return trainer.get_epsilon(); } + unsigned long get_max_iterations ( + ) const { return trainer.get_max_iterations(); } + + void set_max_iterations ( + unsigned long max_iter + ) + { + trainer.set_max_iterations(max_iter); + } + void set_max_cache_size ( unsigned long max_size ) diff --git a/dlib/svm/structural_sequence_segmentation_trainer_abstract.h b/dlib/svm/structural_sequence_segmentation_trainer_abstract.h index c650dede8..bcd927ca6 100644 --- a/dlib/svm/structural_sequence_segmentation_trainer_abstract.h +++ b/dlib/svm/structural_sequence_segmentation_trainer_abstract.h @@ -44,6 +44,7 @@ namespace dlib - #get_c() == 100 - this object isn't verbose - #get_epsilon() == 0.1 + - #get_max_iterations() == 10000 - #get_num_threads() == 2 - #get_max_cache_size() == 40 - #get_feature_extractor() == a default initialized feature_extractor @@ -59,6 +60,7 @@ namespace dlib - #get_c() == 100 - this object isn't verbose - #get_epsilon() == 0.1 + - #get_max_iterations() == 10000 - #get_num_threads() == 2 - #get_max_cache_size() == 40 - #get_feature_extractor() == fe @@ -111,6 +113,22 @@ namespace dlib per training sample is within epsilon of its optimal value". !*/ + void set_max_iterations ( + unsigned long max_iter + ); + /*! + ensures + - #get_max_iterations() == max_iter + !*/ + + unsigned long get_max_iterations ( + ); + /*! + ensures + - returns the maximum number of iterations the SVM optimizer is allowed to + run before it is required to stop and return a result. + !*/ + void set_max_cache_size ( unsigned long max_size );