PLearn 0.1
|
#include <PLearnerOutputVMatrix.h>
Public Member Functions | |
PLearnerOutputVMatrix (bool call_build_=false) | |
PLearnerOutputVMatrix (VMat source_, TVec< PP< PLearner > > learners_, bool put_raw_input_=false, bool train_learners_=false, bool compute_output_once_=false, bool put_non_input_=true, bool call_build_=true) | |
PLearnerOutputVMatrix (VMat source_, PP< PLearner > learner, bool put_raw_input_=false, bool train_learners_=false, bool compute_output_once_=false, bool put_non_input_=true, bool call_build_=true) | |
virtual void | build () |
Simply calls inherited::build() then build_(). | |
virtual void | makeDeepCopyFromShallowCopy (CopiesMap &copies) |
Transforms a shallow copy into a deep copy. | |
virtual string | classname () const |
virtual OptionList & | getOptionList () const |
virtual OptionMap & | getOptionMap () const |
virtual RemoteMethodMap & | getRemoteMethodMap () const |
virtual PLearnerOutputVMatrix * | deepCopy (CopiesMap &copies) const |
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 | |
VMat | fieldinfos_source |
VMat | data_train |
TVec< PP< PLearner > > | learners |
bool | put_raw_input |
bool | put_non_input |
bool | train_learners |
bool | compute_output_once |
Static Public Attributes | |
static StaticInitializer | _static_initializer_ |
Protected Member Functions | |
virtual void | getNewRow (int i, const Vec &v) const |
This is the only method requiring implementation. | |
Static Protected Member Functions | |
static void | declareOptions (OptionList &ol) |
Declares this class' options. | |
Protected Attributes | |
Vec | row |
Vec | learner_input |
TVec< Vec > | learners_output |
Instead of Mat to allow learners of various outputsizes. | |
Vec | learner_target |
Vec | non_input_part_of_source_row |
bool | learners_need_train |
Used to keep track of whether learners need training or not. | |
TVec< Mat > | complete_learners_output |
Private Types | |
typedef SourceVMatrix | inherited |
Private Member Functions | |
void | build_ () |
This does the actual building. |
Definition at line 54 of file PLearnerOutputVMatrix.h.
typedef SourceVMatrix PLearn::PLearnerOutputVMatrix::inherited [private] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 56 of file PLearnerOutputVMatrix.h.
PLearn::PLearnerOutputVMatrix::PLearnerOutputVMatrix | ( | bool | call_build_ = false | ) |
Definition at line 50 of file PLearnerOutputVMatrix.cc.
References build_().
:inherited(call_build_), put_raw_input(false), put_non_input(true), train_learners(false), compute_output_once(false) /* ### Initialize all fields to their default value */ { if( call_build_ ) build_(); }
PLearn::PLearnerOutputVMatrix::PLearnerOutputVMatrix | ( | VMat | source_, |
TVec< PP< PLearner > > | learners_, | ||
bool | put_raw_input_ = false , |
||
bool | train_learners_ = false , |
||
bool | compute_output_once_ = false , |
||
bool | put_non_input_ = true , |
||
bool | call_build_ = true |
||
) |
Definition at line 62 of file PLearnerOutputVMatrix.cc.
References build_().
: inherited(source_, call_build_), learners(learners_), put_raw_input(put_raw_input_), put_non_input(put_non_input_), train_learners(train_learners_), compute_output_once(compute_output_once_) { if( call_build_ ) build_(); }
PLearn::PLearnerOutputVMatrix::PLearnerOutputVMatrix | ( | VMat | source_, |
PP< PLearner > | learner, | ||
bool | put_raw_input_ = false , |
||
bool | train_learners_ = false , |
||
bool | compute_output_once_ = false , |
||
bool | put_non_input_ = true , |
||
bool | call_build_ = true |
||
) |
Definition at line 80 of file PLearnerOutputVMatrix.cc.
References build_(), learners, and PLearn::TVec< T >::resize().
: inherited(source_, call_build_), put_raw_input(put_raw_input_), put_non_input(put_non_input_), train_learners(train_learners_), compute_output_once(compute_output_once_) { learners.resize(1); learners[0] = learner; if( call_build_ ) build_(); }
string PLearn::PLearnerOutputVMatrix::_classname_ | ( | ) | [static] |
Declares name and deepCopy methods.
Reimplemented from PLearn::SourceVMatrix.
Definition at line 123 of file PLearnerOutputVMatrix.cc.
OptionList & PLearn::PLearnerOutputVMatrix::_getOptionList_ | ( | ) | [static] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 123 of file PLearnerOutputVMatrix.cc.
RemoteMethodMap & PLearn::PLearnerOutputVMatrix::_getRemoteMethodMap_ | ( | ) | [static] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 123 of file PLearnerOutputVMatrix.cc.
Reimplemented from PLearn::SourceVMatrix.
Definition at line 123 of file PLearnerOutputVMatrix.cc.
Object * PLearn::PLearnerOutputVMatrix::_new_instance_for_typemap_ | ( | ) | [static] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 123 of file PLearnerOutputVMatrix.cc.
StaticInitializer PLearnerOutputVMatrix::_static_initializer_ & PLearn::PLearnerOutputVMatrix::_static_initialize_ | ( | ) | [static] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 123 of file PLearnerOutputVMatrix.cc.
void PLearn::PLearnerOutputVMatrix::build | ( | ) | [virtual] |
Simply calls inherited::build() then build_().
Reimplemented from PLearn::SourceVMatrix.
Definition at line 365 of file PLearnerOutputVMatrix.cc.
References PLearn::SourceVMatrix::build(), and build_().
{ inherited::build(); build_(); }
void PLearn::PLearnerOutputVMatrix::build_ | ( | ) | [private] |
This does the actual building.
Reimplemented from PLearn::SourceVMatrix.
Definition at line 236 of file PLearnerOutputVMatrix.cc.
References PLearn::TVec< T >::append(), complete_learners_output, compute_output_once, data_train, PLearn::VMatrix::declareFieldNames(), PLearn::VMatrix::extrasize_, fieldinfos_source, i, PLearn::VMatrix::inputsize_, j, learner_input, learner_target, learners, learners_need_train, learners_output, PLearn::VMat::length(), PLearn::TVec< T >::length(), PLearn::VMatrix::length_, non_input_part_of_source_row, PLERROR, put_non_input, put_raw_input, PLearn::TVec< T >::resize(), row, PLearn::VMatrix::setFieldInfos(), PLearn::SourceVMatrix::source, PLearn::TVec< T >::subVec(), PLearn::VMatrix::targetsize_, train_learners, PLearn::VMatrix::updateMtime(), PLearn::VMatrix::weightsize_, PLearn::VMat::width(), and PLearn::VMatrix::width_.
Referenced by build(), and PLearnerOutputVMatrix().
{ updateMtime(source); if (source && learners.length()>0 && learners[0]) { learners_need_train = train_learners; row.resize(source->width()); if (train_learners) { // Set the learners' training set. for (int i = 0; i < learners.length(); i++) { if (data_train) learners[i]->setTrainingSet(data_train); else learners[i]->setTrainingSet(source); } // Note that the learners will be train only if we actually // call getRow() or if compute_output_once is true } if(compute_output_once) { complete_learners_output.resize(learners.length()); for (int i = 0; i < learners.length(); i++) { if(train_learners) { PP<VecStatsCollector> stats = new VecStatsCollector(); learners[i]->setTrainStatsCollector(stats); learners[i]->train(); stats->finalize(); } complete_learners_output[i].resize(source->length(), learners[i]->outputsize()); } learners_need_train = false; Vec input_row = row.subVec(0,source->inputsize()); for(int i=0; i<source->length();i++) { source->getRow(i,row); for (int j=0;j<learners.length();j++) { Vec out_j = complete_learners_output[j](i); learners[j]->computeOutput(input_row,out_j); } } } if (source->inputsize() < 0) PLERROR("In PLearnerOutputVMatrix::build_ - The 'source' matrix" " has a negative inputsize"); if (source->targetsize() < 0) PLERROR("In PLearnerOutputVMatrix::build_ - The 'source' matrix" " has a negative targetsize"); if (source->weightsize() < 0) PLERROR("In PLearnerOutputVMatrix::build_ - The 'source' matrix" " has a negative weightsize"); // Some further state variable initializations learner_input = row.subVec(0,source->inputsize()); learner_target = row.subVec(source->inputsize(),source->targetsize()); non_input_part_of_source_row = row.subVec(source->inputsize(), source->width() - source->inputsize()); learners_output.resize(learners->length()); // Compute the total width of the VMatrix and the width of the various // components inputsize_ = 0; for (int i=0;i<learners->length();i++) inputsize_ += learners[i]->outputsize(); if (put_raw_input) inputsize_ += source->inputsize(); if (put_non_input) { targetsize_ = source->targetsize(); weightsize_ = source->weightsize(); extrasize_ = source->extrasize(); width_ = inputsize_ + targetsize_ + weightsize_ + extrasize_; } else { targetsize_ = 0; weightsize_ = 0; width_ = inputsize_; } length_ = source->length(); // Set field info. if (fieldinfos_source) setFieldInfos(fieldinfos_source->getFieldInfos()); else { TVec<string> fieldnames; for(int k=0; k<learners.length(); k++) fieldnames.append(learners[k]->getOutputNames()); if(put_raw_input) fieldnames.append(source->inputFieldNames()); if(put_non_input) { fieldnames.append(source->targetFieldNames()); fieldnames.append(source->weightFieldNames()); fieldnames.append(source->extraFieldNames()); } declareFieldNames(fieldnames); } /* OLD CODE else { fieldinfos.resize(width_); if (put_non_input && source->getFieldInfos().size() >= source->inputsize() + source->targetsize()) { // We can retrieve the information for the target columns. for (int i = 0; i < source->targetsize(); i++) { fieldinfos[i + this->inputsize()] = source->getFieldInfos()[i + source->inputsize()]; } } } */ } }
string PLearn::PLearnerOutputVMatrix::classname | ( | ) | const [virtual] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 123 of file PLearnerOutputVMatrix.cc.
void PLearn::PLearnerOutputVMatrix::declareOptions | ( | OptionList & | ol | ) | [static, protected] |
Declares this class' options.
Reimplemented from PLearn::SourceVMatrix.
Definition at line 178 of file PLearnerOutputVMatrix.cc.
References PLearn::OptionBase::buildoption, compute_output_once, data_train, PLearn::declareOption(), PLearn::SourceVMatrix::declareOptions(), fieldinfos_source, learners, PLearn::OptionBase::learntoption, PLearn::OptionBase::nosave, put_non_input, put_raw_input, PLearn::SourceVMatrix::source, and train_learners.
{ // ### 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. Another possible flag to be combined with // ### is OptionBase::nosave declareOption(ol, "data", &PLearnerOutputVMatrix::source, (OptionBase::learntoption | OptionBase::nosave), "DEPRECATED - Use 'source' instead."); declareOption(ol, "learners", &PLearnerOutputVMatrix::learners, OptionBase::buildoption, "The vector of PLearners which will be applied to 'source'" " data set."); declareOption(ol, "put_raw_input", &PLearnerOutputVMatrix::put_raw_input, OptionBase::buildoption, "Whether to include in the input part of this VMatrix the" " raw input part\n" "of 'source'.\n"); declareOption(ol, "put_non_input", &PLearnerOutputVMatrix::put_non_input, OptionBase::buildoption, "Whether to include in this VMatrix the original target and" " weights."); declareOption(ol, "train_learners", &PLearnerOutputVMatrix::train_learners, OptionBase::buildoption, "If set to 1, the learners will be train on 'source' (or" " 'data_train' if present)\n" "before computing the output.\n"); declareOption(ol, "data_train", &PLearnerOutputVMatrix::data_train, OptionBase::buildoption, "If provided and 'train_learners' is set to 1, the learner" " will be trained\n" "on this dataset.\n"); declareOption(ol, "compute_output_once", &PLearnerOutputVMatrix::compute_output_once, OptionBase::buildoption, "If set to 1, the output of the learners will be computed" " once and stored"); declareOption(ol, "fieldinfos_source", &PLearnerOutputVMatrix::fieldinfos_source, OptionBase::buildoption, "If provided, the fieldnames will be copied from this VMat."); // Now call the parent class' declareOptions inherited::declareOptions(ol); }
static const PPath& PLearn::PLearnerOutputVMatrix::declaringFile | ( | ) | [inline, static] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 144 of file PLearnerOutputVMatrix.h.
PLearnerOutputVMatrix * PLearn::PLearnerOutputVMatrix::deepCopy | ( | CopiesMap & | copies | ) | const [virtual] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 123 of file PLearnerOutputVMatrix.cc.
This is the only method requiring implementation.
Reimplemented from PLearn::SourceVMatrix.
Definition at line 125 of file PLearnerOutputVMatrix.cc.
References c, complete_learners_output, compute_output_once, i, j, learner_input, learners, learners_need_train, learners_output, PLearn::TVec< T >::length(), non_input_part_of_source_row, put_non_input, put_raw_input, PLearn::TVec< T >::resize(), row, PLearn::SourceVMatrix::source, and PLearn::TVec< T >::subVec().
{ int c=0; if (learners_need_train) { // We need to train the learners first. for (int k = 0; k < learners.length(); k++) { PP<VecStatsCollector> stats = new VecStatsCollector(); learners[k]->setTrainStatsCollector(stats); learners[k]->train(); stats->finalize(); } learners_need_train = false; } source->getRow(i,row); if(compute_output_once) { // Use precomputed outputs for (int j=0;j<learners.length();j++) { v.subVec(c,learners[j]->outputsize()) << complete_learners_output[j](i); c += learners[j]->outputsize(); } } else { // Compute output for each learner; now allow each learner to have a // different outputsize. The variable 'learners_output' is kept for // backwards compatibility, but is no longer strictly necessary for (int j=0;j<learners.length();j++) { int cur_outputsize = learners[j]->outputsize(); learners_output[j].resize(cur_outputsize); learners[j]->computeOutput(learner_input, learners_output[j]); v.subVec(c, cur_outputsize) << learners_output[j]; c += cur_outputsize; } } if (put_raw_input) { v.subVec(c,learner_input->length()) << learner_input; c+=learner_input->length(); } if (put_non_input) v.subVec(c,non_input_part_of_source_row.length()) << non_input_part_of_source_row; }
OptionList & PLearn::PLearnerOutputVMatrix::getOptionList | ( | ) | const [virtual] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 123 of file PLearnerOutputVMatrix.cc.
OptionMap & PLearn::PLearnerOutputVMatrix::getOptionMap | ( | ) | const [virtual] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 123 of file PLearnerOutputVMatrix.cc.
RemoteMethodMap & PLearn::PLearnerOutputVMatrix::getRemoteMethodMap | ( | ) | const [virtual] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 123 of file PLearnerOutputVMatrix.cc.
void PLearn::PLearnerOutputVMatrix::makeDeepCopyFromShallowCopy | ( | CopiesMap & | copies | ) | [virtual] |
Transforms a shallow copy into a deep copy.
Reimplemented from PLearn::SourceVMatrix.
Definition at line 371 of file PLearnerOutputVMatrix.cc.
References complete_learners_output, data_train, PLearn::deepCopyField(), learner_input, learner_target, learners, learners_output, PLearn::SourceVMatrix::makeDeepCopyFromShallowCopy(), non_input_part_of_source_row, and row.
{ inherited::makeDeepCopyFromShallowCopy(copies); deepCopyField(row, copies); deepCopyField(learner_input, copies); deepCopyField(learners_output, copies); deepCopyField(learner_target, copies); deepCopyField(non_input_part_of_source_row, copies); deepCopyField(complete_learners_output, copies); deepCopyField(data_train, copies); deepCopyField(learners, copies); }
Reimplemented from PLearn::SourceVMatrix.
Definition at line 144 of file PLearnerOutputVMatrix.h.
TVec<Mat> PLearn::PLearnerOutputVMatrix::complete_learners_output [mutable, protected] |
Definition at line 73 of file PLearnerOutputVMatrix.h.
Referenced by build_(), getNewRow(), and makeDeepCopyFromShallowCopy().
Definition at line 95 of file PLearnerOutputVMatrix.h.
Referenced by build_(), declareOptions(), and getNewRow().
Definition at line 85 of file PLearnerOutputVMatrix.h.
Referenced by build_(), declareOptions(), and makeDeepCopyFromShallowCopy().
Definition at line 81 of file PLearnerOutputVMatrix.h.
Referenced by build_(), and declareOptions().
Vec PLearn::PLearnerOutputVMatrix::learner_input [mutable, protected] |
Definition at line 66 of file PLearnerOutputVMatrix.h.
Referenced by build_(), getNewRow(), and makeDeepCopyFromShallowCopy().
Vec PLearn::PLearnerOutputVMatrix::learner_target [mutable, protected] |
Definition at line 69 of file PLearnerOutputVMatrix.h.
Referenced by build_(), and makeDeepCopyFromShallowCopy().
Definition at line 88 of file PLearnerOutputVMatrix.h.
Referenced by build_(), declareOptions(), getNewRow(), makeDeepCopyFromShallowCopy(), and PLearnerOutputVMatrix().
bool PLearn::PLearnerOutputVMatrix::learners_need_train [mutable, protected] |
Used to keep track of whether learners need training or not.
Definition at line 72 of file PLearnerOutputVMatrix.h.
Referenced by build_(), and getNewRow().
TVec< Vec > PLearn::PLearnerOutputVMatrix::learners_output [mutable, protected] |
Instead of Mat to allow learners of various outputsizes.
Definition at line 68 of file PLearnerOutputVMatrix.h.
Referenced by build_(), getNewRow(), and makeDeepCopyFromShallowCopy().
Vec PLearn::PLearnerOutputVMatrix::non_input_part_of_source_row [mutable, protected] |
Definition at line 70 of file PLearnerOutputVMatrix.h.
Referenced by build_(), getNewRow(), and makeDeepCopyFromShallowCopy().
Definition at line 93 of file PLearnerOutputVMatrix.h.
Referenced by build_(), declareOptions(), and getNewRow().
Definition at line 92 of file PLearnerOutputVMatrix.h.
Referenced by build_(), declareOptions(), and getNewRow().
Vec PLearn::PLearnerOutputVMatrix::row [mutable, protected] |
Definition at line 65 of file PLearnerOutputVMatrix.h.
Referenced by build_(), getNewRow(), and makeDeepCopyFromShallowCopy().
Definition at line 94 of file PLearnerOutputVMatrix.h.
Referenced by build_(), and declareOptions().