PLearn 0.1
|
The first sentence should be a BRIEF DESCRIPTION of what the class does. More...
#include <TransformOutputLearner.h>
Public Member Functions | |
TransformOutputLearner () | |
Default constructor. | |
virtual void | computeOutput (const Vec &input, Vec &output) const |
Computes the output from the input. | |
virtual void | computeCostsFromOutputs (const Vec &input, const Vec &output, const Vec &target, Vec &costs) const |
Computes the costs from already computed output. | |
virtual void | computeOutputAndCosts (const Vec &input, const Vec &target, Vec &output, Vec &costs) const |
Forwarded to inner learner. | |
virtual void | test (VMat testset, PP< VecStatsCollector > test_stats, VMat testoutputs, VMat testcosts) const |
The behavior of this method depends on the value of the 'forward_test' option. | |
virtual int | outputsize () const |
Forwarded to inner learner. | |
virtual string | classname () const |
virtual OptionList & | getOptionList () const |
virtual OptionMap & | getOptionMap () const |
virtual RemoteMethodMap & | getRemoteMethodMap () const |
virtual TransformOutputLearner * | deepCopy (CopiesMap &copies) const |
virtual void | build () |
Finish building the object; just call inherited::build followed by build_() | |
Static Public Member Functions | |
static string | _classname_ () |
Declares name and deepCopy methods. | |
static OptionList & | _getOptionList_ () |
static RemoteMethodMap & | _getRemoteMethodMap_ () |
static Object * | _new_instance_for_typemap_ () |
static bool | _isa_ (const Object *o) |
static void | _static_initialize_ () |
static const PPath & | declaringFile () |
Public Attributes | |
int | output_function |
### declare public option fields (such as build options) here Start your comments with Doxygen-compatible comments such as //! | |
Static Public Attributes | |
static StaticInitializer | _static_initializer_ |
Static Protected Member Functions | |
static void | declareOptions (OptionList &ol) |
Declares the class options. | |
Private Types | |
typedef EmbeddedLearner | inherited |
Private Member Functions | |
void | build_ () |
This does the actual building. | |
Private Attributes | |
Vec | tmp_output2 |
bool | warning0 |
bool | warning1 |
The first sentence should be a BRIEF DESCRIPTION of what the class does.
Place the rest of the class programmer documentation here. Doxygen supports Javadoc-style comments. See http://www.doxygen.org/manual.html
Definition at line 57 of file TransformOutputLearner.h.
typedef EmbeddedLearner PLearn::TransformOutputLearner::inherited [private] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 59 of file TransformOutputLearner.h.
PLearn::TransformOutputLearner::TransformOutputLearner | ( | ) |
Default constructor.
Definition at line 50 of file TransformOutputLearner.cc.
References PLearn::EmbeddedLearner::forward_test.
:inherited(), output_function(-1), warning0(true), warning1(true) { forward_test=true; }
string PLearn::TransformOutputLearner::_classname_ | ( | ) | [static] |
Declares name and deepCopy methods.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 48 of file TransformOutputLearner.cc.
OptionList & PLearn::TransformOutputLearner::_getOptionList_ | ( | ) | [static] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 48 of file TransformOutputLearner.cc.
RemoteMethodMap & PLearn::TransformOutputLearner::_getRemoteMethodMap_ | ( | ) | [static] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 48 of file TransformOutputLearner.cc.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 48 of file TransformOutputLearner.cc.
Object * PLearn::TransformOutputLearner::_new_instance_for_typemap_ | ( | ) | [static] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 48 of file TransformOutputLearner.cc.
StaticInitializer TransformOutputLearner::_static_initializer_ & PLearn::TransformOutputLearner::_static_initialize_ | ( | ) | [static] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 48 of file TransformOutputLearner.cc.
void PLearn::TransformOutputLearner::build | ( | ) | [virtual] |
Finish building the object; just call inherited::build followed by build_()
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 91 of file TransformOutputLearner.cc.
References PLearn::EmbeddedLearner::build(), and build_().
{ inherited::build(); build_(); }
void PLearn::TransformOutputLearner::build_ | ( | ) | [private] |
This does the actual building.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 85 of file TransformOutputLearner.cc.
References PLearn::EmbeddedLearner::learner_, PLearn::TVec< T >::resize(), and tmp_output2.
Referenced by build().
{ tmp_output2.resize(learner_->outputsize()); }
string PLearn::TransformOutputLearner::classname | ( | ) | const [virtual] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 48 of file TransformOutputLearner.cc.
void PLearn::TransformOutputLearner::computeCostsFromOutputs | ( | const Vec & | input, |
const Vec & | output, | ||
const Vec & | target, | ||
Vec & | costs | ||
) | const [virtual] |
Computes the costs from already computed output.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 131 of file TransformOutputLearner.cc.
References PLearn::compute_log(), computeOutputAndCosts(), PLearn::EmbeddedLearner::learner_, output_function, PLASSERT, PLERROR, PLWARNING, tmp_output2, warning0, and warning1.
{ PLASSERT( learner_ ); if(output_function==0){ if(warning0){ PLWARNING("In TransformOutputLearner::computeCostsFromOutputs - you are loosing precision"); warning0=false; } compute_log(output,tmp_output2); learner_->computeCostsFromOutputs(input,tmp_output2,target,costs); }else if(output_function==1 || output_function==2){ if(warning1){ PLWARNING("In TransformOutputLearner::computeCostsFromOutputs - we can't compute the costs from\n" "outputs with output_function %d. We use TransformOutputLearner::computeOutputAndCosts.",output_function); warning1=false; } computeOutputAndCosts(input,target,tmp_output2,costs); }else PLERROR("In TransformOutputLearner::computeCostsFromOutputs - unknow output_function %d",output_function); }
void PLearn::TransformOutputLearner::computeOutput | ( | const Vec & | input, |
Vec & | output | ||
) | const [virtual] |
Computes the output from the input.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 97 of file TransformOutputLearner.cc.
References PLearn::argmax(), PLearn::exp(), PLearn::EmbeddedLearner::learner_, output_function, PLERROR, and tmp_output2.
{ // Compute the output from the input. // int nout = outputsize(); // output.resize(nout); // ... if(output_function==0){//logprob to prob learner_->computeOutput(input,output); exp(output,output); }else if(output_function==1){//logprob or prob to class learner_->computeOutput(input,tmp_output2); output[0]=argmax(tmp_output2); }else if(output_function==2){//Regression to class v1 learner_->computeOutput(input,tmp_output2); output[0]=int(round(tmp_output2[0])); // }else if(output_function==2){//Regression to class v2 // learner_->computeOutput(input, output); // if (multiclass_outputs.length() <= 0) return; // real closest_value=multiclass_outputs[0]; // real margin_to_closest_value=abs(output[0] - multiclass_outputs[0]); // for (int value_ind = 1; value_ind < multiclass_outputs.length(); value_ind++) // { // real v=abs(output[0] - multiclass_outputs[value_ind]); // if (v < margin_to_closest_value) // { // closest_value = multiclass_outputs[value_ind]; // margin_to_closest_value = v; // } // } // output[0] = closest_value; }else PLERROR("In TransformOutputLearner::computeOutput - unknow output_function %d",output_function); }
void PLearn::TransformOutputLearner::computeOutputAndCosts | ( | const Vec & | input, |
const Vec & | target, | ||
Vec & | output, | ||
Vec & | costs | ||
) | const [virtual] |
Forwarded to inner learner.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 152 of file TransformOutputLearner.cc.
References PLearn::argmax(), PLearn::exp(), PLearn::EmbeddedLearner::learner_, output_function, PLASSERT, PLERROR, and tmp_output2.
Referenced by computeCostsFromOutputs().
{ PLASSERT( learner_ ); if(output_function==0){//logprob to prob learner_->computeOutputAndCosts(input,target,output,costs); exp(output,output); }else if(output_function==1){//logprob or prob to class learner_->computeOutputAndCosts(input,target,tmp_output2,costs); output[0]=argmax(output); }else if(output_function==2){//Regression to class v1 learner_->computeOutputAndCosts(input,target,tmp_output2,costs); output[0]=int(round(tmp_output2[0])); }else PLERROR("In TransformOutputLearner::computeOutputAndCosts - unknow output_function %d",output_function); }
void PLearn::TransformOutputLearner::declareOptions | ( | OptionList & | ol | ) | [static, protected] |
Declares the class options.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 59 of file TransformOutputLearner.cc.
References PLearn::OptionBase::buildoption, PLearn::declareOption(), PLearn::EmbeddedLearner::declareOptions(), and output_function.
{ // ### Declare all of this object's options here. // ### For the "flags" of each option, you should typically specify // ### one of OptionBase::buildoption, OptionBase::learntoption or // ### OptionBase::tuningoption. If you don't provide one of these three, // ### this option will be ignored when loading values from a script. // ### You can also combine flags, for example with OptionBase::nosave: // ### (OptionBase::buildoption | OptionBase::nosave) // ### ex: // declareOption(ol, "myoption", &TransformOutputLearner::myoption, // OptionBase::buildoption, // "Help text describing this option"); // ... declareOption(ol, "output_function", &TransformOutputLearner::output_function, OptionBase::buildoption, "The operation to do on the output\n" "0: We transform the sublearner log probability output to probability output\n" "1: We transform the sublearner probability output of class to class output\n" "2: We transform the sublearner regression output to class output."); // Now call the parent class' declareOptions inherited::declareOptions(ol); }
static const PPath& PLearn::TransformOutputLearner::declaringFile | ( | ) | [inline, static] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 102 of file TransformOutputLearner.h.
:
//##### Protected Member Functions ######################################
TransformOutputLearner * PLearn::TransformOutputLearner::deepCopy | ( | CopiesMap & | copies | ) | const [virtual] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 48 of file TransformOutputLearner.cc.
OptionList & PLearn::TransformOutputLearner::getOptionList | ( | ) | const [virtual] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 48 of file TransformOutputLearner.cc.
OptionMap & PLearn::TransformOutputLearner::getOptionMap | ( | ) | const [virtual] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 48 of file TransformOutputLearner.cc.
RemoteMethodMap & PLearn::TransformOutputLearner::getRemoteMethodMap | ( | ) | const [virtual] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 48 of file TransformOutputLearner.cc.
int PLearn::TransformOutputLearner::outputsize | ( | ) | const [virtual] |
Forwarded to inner learner.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 183 of file TransformOutputLearner.cc.
References PLearn::EmbeddedLearner::learner_, output_function, PLASSERT, and PLERROR.
{ PLASSERT( learner_ ); if(output_function==0) return learner_->outputsize(); else if (output_function==1 || output_function==2) return 1; else PLERROR("In TransformOutputLearner::outputsize"); return -1; }
void PLearn::TransformOutputLearner::test | ( | VMat | testset, |
PP< VecStatsCollector > | test_stats, | ||
VMat | testoutputs, | ||
VMat | testcosts | ||
) | const [virtual] |
The behavior of this method depends on the value of the 'forward_test' option.
If set to 'true', the call will be forwarded to the underlying learner. If set to 'false' (default), simply call inherited::test(..). This is to allow forwarding of this method in subclasses of EmbeddedLearner that need it, while most of them will not need it.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 169 of file TransformOutputLearner.cc.
References PLearn::exp(), i, PLearn::EmbeddedLearner::learner_, PLearn::VMat::length(), output_function, PLASSERT, and PLERROR.
{ PLASSERT( learner_ ); if(output_function==0){ learner_->test(testset, test_stats, testoutputs, testcosts); for(int i = 0;i<testoutputs.length();i++){ Vec v = testoutputs(i); exp(v,v); } } else PLERROR("In TransformOutputLearner::test"); }
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 102 of file TransformOutputLearner.h.
### declare public option fields (such as build options) here Start your comments with Doxygen-compatible comments such as //!
The operation to do on the output
Definition at line 68 of file TransformOutputLearner.h.
Referenced by computeCostsFromOutputs(), computeOutput(), computeOutputAndCosts(), declareOptions(), outputsize(), and test().
Vec PLearn::TransformOutputLearner::tmp_output2 [mutable, private] |
Definition at line 128 of file TransformOutputLearner.h.
Referenced by build_(), computeCostsFromOutputs(), computeOutput(), and computeOutputAndCosts().
bool PLearn::TransformOutputLearner::warning0 [mutable, private] |
Definition at line 129 of file TransformOutputLearner.h.
Referenced by computeCostsFromOutputs().
bool PLearn::TransformOutputLearner::warning1 [mutable, private] |
Definition at line 130 of file TransformOutputLearner.h.
Referenced by computeCostsFromOutputs().