Browse Source

added virtuality for addMultipleExamples, moved bool flag to private settings

Alexander Freytag 12 years ago
parent
commit
a58864329c
2 changed files with 18 additions and 7 deletions
  1. 12 5
      GPHIKClassifierNICE.cpp
  2. 6 2
      GPHIKClassifierNICE.h

+ 12 - 5
GPHIKClassifierNICE.cpp

@@ -21,7 +21,8 @@ GPHIKClassifierNICE::GPHIKClassifierNICE( const Config *conf, const string & con
 {
   this->verbose = conf->gB(confSection, "verbose", false);
   this->useSimpleBalancing = conf->gB(confSection, "use_simple_balancing", false);
-  this->minSamples = conf->gI(confSection, "min_samples", -1);  
+  this->minSamples = conf->gI(confSection, "min_samples", -1);
+  this->performOptimizationAfterIncrement = conf->gB(confSection, "performOptimizationAfterIncrement", true);
   
   classifier = new GPHIKClassifier(conf, confSection);
 }
@@ -186,6 +187,10 @@ void GPHIKClassifierNICE::restore ( std::istream & is, int format )
   if (is.good())
   {
     classifier->restore(is, format);  
+    
+    std::string tmp;
+    is >> tmp; //"performOptimizationAfterIncrement: "
+    is >> this->performOptimizationAfterIncrement;
   }
   else
   {
@@ -200,6 +205,8 @@ void GPHIKClassifierNICE::store ( std::ostream & os, int format ) const
     os.precision (numeric_limits<double>::digits10 + 1);
     
     classifier->store(os, format);
+    
+    os << "performOptimizationAfterIncrement: " << performOptimizationAfterIncrement << std::endl;
   }
   else
   {
@@ -207,13 +214,13 @@ void GPHIKClassifierNICE::store ( std::ostream & os, int format ) const
   }
 }
 
-void GPHIKClassifierNICE::addExample( const Example & pe, const double & label, const bool & performOptimizationAfterIncrement)
+void GPHIKClassifierNICE::addExample( const Example & pe, const double & label)
 {
   const SparseVector *svec = pe.svec;
-  classifier->addExample(svec, label, performOptimizationAfterIncrement);
+  classifier->addExample(svec, label, this->performOptimizationAfterIncrement);
 }
 
-void GPHIKClassifierNICE::addMultipleExamples( Examples & newExamples, const bool & performOptimizationAfterIncrement)
+void GPHIKClassifierNICE::addMultipleExamples( Examples & newExamples)
 {
   //are new examples available? If not, nothing has to be done
   if ( newExamples.size() < 1)
@@ -238,5 +245,5 @@ void GPHIKClassifierNICE::addMultipleExamples( Examples & newExamples, const boo
     sparseExamples.push_back( example.svec );    
   }  
   
-  classifier->addMultipleExamples(sparseExamples, y, performOptimizationAfterIncrement);  
+  classifier->addMultipleExamples(sparseExamples, y, this->performOptimizationAfterIncrement);  
 }

+ 6 - 2
GPHIKClassifierNICE.h

@@ -35,6 +35,9 @@ class GPHIKClassifierNICE : public FeaturePoolClassifier
     /** a simple balancing strategy: use only that many examples of each class, as the smallest class provides*/
     bool useSimpleBalancing; 
     int minSamples;
+    
+    /** When adding new examples, do we want to run a whole optimization of all involved hyperparameters? default: true*/
+    bool performOptimizationAfterIncrement;
 
   public:
 
@@ -86,8 +89,9 @@ class GPHIKClassifierNICE : public FeaturePoolClassifier
      */       
     void predictUncertainty( const NICE::SparseVector * example, NICE::Vector & uncertainties );
     
-    void addExample( const OBJREC::Example & pe, const double & label, const bool & performOptimizationAfterIncrement = true);
-    void addMultipleExamples( OBJREC::Examples & newExamples, const bool & performOptimizationAfterIncrement = true);
+    void addExample( const OBJREC::Example & pe, const double & label);
+    virtual void addMultipleExamples( OBJREC::Examples & newExamples);
+    
 };
 
 }