PLearn 0.1
|
Splitter that removes a task for test and keeps the others for training. More...
#include <MultiTaskSeparationSplitter.h>
Public Member Functions | |
MultiTaskSeparationSplitter () | |
Default constructor. | |
virtual int | nsplits () const |
Returns the number of available different "splits". | |
virtual int | nSetsPerSplit () const |
Returns the number of sets per split. | |
virtual TVec< VMat > | getSplit (int i=0) |
Returns split number i. | |
virtual void | setDataSet (VMat the_dataset) |
Sets the dataset on which the splits are to be based. | |
virtual string | classname () const |
virtual OptionList & | getOptionList () const |
virtual OptionMap & | getOptionMap () const |
virtual RemoteMethodMap & | getRemoteMethodMap () const |
virtual MultiTaskSeparationSplitter * | deepCopy (CopiesMap &copies) const |
virtual void | build () |
Post-constructor. | |
virtual void | makeDeepCopyFromShallowCopy (CopiesMap &copies) |
Transforms a shallow copy into a deep copy. | |
Static Public Member Functions | |
static string | _classname_ () |
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 | numsplits |
Number of splits. If <= 0, then it is set to nclasses. | |
TVec< int > | tasks |
Tasks to isolate from the others. Determines number of splits. | |
bool | select_tasks_randomly |
Indication that the tasks should be chose at random. | |
bool | append_train |
Indication that the training set should be appended to the split sets lists. | |
real | seed |
Seed for random generator. | |
Static Public Attributes | |
static StaticInitializer | _static_initializer_ |
Static Protected Member Functions | |
static void | declareOptions (OptionList &ol) |
Declares the class options. | |
Protected Attributes | |
PP< PRandom > | random_gen |
Private Types | |
typedef Splitter | inherited |
Private Member Functions | |
void | build_ () |
This does the actual building. |
Splitter that removes a task for test and keeps the others for training.
This splitter is intended to measure inductive transfer performance from some tasks to other tasks.
Definition at line 56 of file MultiTaskSeparationSplitter.h.
typedef Splitter PLearn::MultiTaskSeparationSplitter::inherited [private] |
Reimplemented from PLearn::Splitter.
Definition at line 58 of file MultiTaskSeparationSplitter.h.
PLearn::MultiTaskSeparationSplitter::MultiTaskSeparationSplitter | ( | ) |
Default constructor.
Definition at line 58 of file MultiTaskSeparationSplitter.cc.
References random_gen.
:Splitter(), numsplits(-1), select_tasks_randomly(1), append_train(0), seed(-1) { random_gen = new PRandom(); }
string PLearn::MultiTaskSeparationSplitter::_classname_ | ( | ) | [static] |
Reimplemented from PLearn::Splitter.
Definition at line 56 of file MultiTaskSeparationSplitter.cc.
OptionList & PLearn::MultiTaskSeparationSplitter::_getOptionList_ | ( | ) | [static] |
Reimplemented from PLearn::Splitter.
Definition at line 56 of file MultiTaskSeparationSplitter.cc.
RemoteMethodMap & PLearn::MultiTaskSeparationSplitter::_getRemoteMethodMap_ | ( | ) | [static] |
Reimplemented from PLearn::Splitter.
Definition at line 56 of file MultiTaskSeparationSplitter.cc.
Reimplemented from PLearn::Splitter.
Definition at line 56 of file MultiTaskSeparationSplitter.cc.
Object * PLearn::MultiTaskSeparationSplitter::_new_instance_for_typemap_ | ( | ) | [static] |
Reimplemented from PLearn::Object.
Definition at line 56 of file MultiTaskSeparationSplitter.cc.
StaticInitializer MultiTaskSeparationSplitter::_static_initializer_ & PLearn::MultiTaskSeparationSplitter::_static_initialize_ | ( | ) | [static] |
Reimplemented from PLearn::Splitter.
Definition at line 56 of file MultiTaskSeparationSplitter.cc.
void PLearn::MultiTaskSeparationSplitter::build | ( | ) | [virtual] |
Post-constructor.
The normal implementation should call simply inherited::build(), then this class's build_(). This method should be callable again at later times, after modifying some option fields to change the "architecture" of the object.
Reimplemented from PLearn::Object.
Definition at line 108 of file MultiTaskSeparationSplitter.cc.
References PLearn::Object::build(), and build_().
Referenced by setDataSet().
{ inherited::build(); build_(); }
void PLearn::MultiTaskSeparationSplitter::build_ | ( | ) | [private] |
This does the actual building.
Reimplemented from PLearn::Object.
Definition at line 83 of file MultiTaskSeparationSplitter.cc.
References PLearn::Splitter::dataset, i, PLearn::TVec< T >::length(), numsplits, PLERROR, random_gen, PLearn::TVec< T >::resize(), seed, select_tasks_randomly, and tasks.
Referenced by build().
{ if (seed != 0) random_gen->manual_seed(long(seed)); if(tasks.length() == 0 && dataset) { if(numsplits <= 0) PLERROR("MultiTaskSeparationSplitter::build_(): numsplits must be > 0"); tasks.resize(numsplits); int it = 0; for(int i=0; i<numsplits; i++) { if(select_tasks_randomly) random_gen->uniform_multinomial_sample(dataset->targetsize()); else { tasks[i] = it; it = (it+1)%dataset->targetsize(); } } } }
string PLearn::MultiTaskSeparationSplitter::classname | ( | ) | const [virtual] |
Reimplemented from PLearn::Object.
Definition at line 56 of file MultiTaskSeparationSplitter.cc.
void PLearn::MultiTaskSeparationSplitter::declareOptions | ( | OptionList & | ol | ) | [static, protected] |
Declares the class options.
Reimplemented from PLearn::Splitter.
Definition at line 64 of file MultiTaskSeparationSplitter.cc.
References append_train, PLearn::OptionBase::buildoption, PLearn::declareOption(), PLearn::Splitter::declareOptions(), numsplits, seed, select_tasks_randomly, and tasks.
{ declareOption(ol, "tasks", &MultiTaskSeparationSplitter::tasks, OptionBase::buildoption, "Tasks to isolate from the others. Determines number of splits."); declareOption(ol, "numsplits", &MultiTaskSeparationSplitter::numsplits, OptionBase::buildoption, "Number of splits. Ignored if tasks is not empty."); declareOption(ol, "select_tasks_randomly", &MultiTaskSeparationSplitter::select_tasks_randomly, OptionBase::buildoption, "If tasks is not specified, indication that the tasks to isolate from the others should be chosen at random.\n" "Otherwise, the tasks are selected by order of their index."); declareOption(ol, "append_train", &MultiTaskSeparationSplitter::append_train, OptionBase::buildoption, "Indication that the training set should be appended to the split sets lists."); declareOption(ol, "seed", &MultiTaskSeparationSplitter::seed, OptionBase::buildoption, "Seed of random generator"); // Now call the parent class' declareOptions inherited::declareOptions(ol); }
static const PPath& PLearn::MultiTaskSeparationSplitter::declaringFile | ( | ) | [inline, static] |
Reimplemented from PLearn::Splitter.
Definition at line 108 of file MultiTaskSeparationSplitter.h.
:
//##### Protected Options ###############################################
MultiTaskSeparationSplitter * PLearn::MultiTaskSeparationSplitter::deepCopy | ( | CopiesMap & | copies | ) | const [virtual] |
Reimplemented from PLearn::Splitter.
Definition at line 56 of file MultiTaskSeparationSplitter.cc.
OptionList & PLearn::MultiTaskSeparationSplitter::getOptionList | ( | ) | const [virtual] |
Reimplemented from PLearn::Object.
Definition at line 56 of file MultiTaskSeparationSplitter.cc.
OptionMap & PLearn::MultiTaskSeparationSplitter::getOptionMap | ( | ) | const [virtual] |
Reimplemented from PLearn::Object.
Definition at line 56 of file MultiTaskSeparationSplitter.cc.
RemoteMethodMap & PLearn::MultiTaskSeparationSplitter::getRemoteMethodMap | ( | ) | const [virtual] |
Reimplemented from PLearn::Object.
Definition at line 56 of file MultiTaskSeparationSplitter.cc.
Returns split number i.
Implements PLearn::Splitter.
Definition at line 134 of file MultiTaskSeparationSplitter.cc.
References PLearn::add_missing(), append_train, PLearn::Splitter::dataset, PLearn::get_input(), i, MISSING_VALUE, PLearn::multi_target_one_hot(), nsplits(), PLERROR, PLearn::TVec< T >::push_back(), PLearn::split(), tasks, and PLearn::VMat::width().
{ if (k >= nsplits()) PLERROR("MultiTaskSeparationSplitter::getSplit() - k (%d) cannot be greater than " " the number of splits (%d)", k, nsplits()); int task_k = tasks[k]; Vec row(dataset->width()); TVec<int> miss_cols_train(0); miss_cols_train.push_back(dataset->inputsize()+task_k); TVec<int> miss_cols_test(0); for(int i=0; i<dataset->targetsize(); i++) { if(task_k != i) miss_cols_test.push_back(dataset->inputsize()+i); } TVec<VMat> split(2); split[0] = get_input(multi_target_one_hot(add_missing(dataset,miss_cols_train),MISSING_VALUE,MISSING_VALUE),dataset->inputsize(),dataset->targetsize()); split[1] = get_input(multi_target_one_hot(add_missing(dataset,miss_cols_test),MISSING_VALUE,MISSING_VALUE),dataset->inputsize(),dataset->targetsize()); if(append_train) { split.resize(3); split[2] = split[0]; } //split.append(split[0]); //if(append_train) split.append(get_input(multi_target_one_hot(add_missing(dataset,miss_cols_train),MISSING_VALUE,MISSING_VALUE),dataset->inputsize(),dataset->targetsize())); return split; }
void PLearn::MultiTaskSeparationSplitter::makeDeepCopyFromShallowCopy | ( | CopiesMap & | copies | ) | [virtual] |
Transforms a shallow copy into a deep copy.
Reimplemented from PLearn::Splitter.
Definition at line 114 of file MultiTaskSeparationSplitter.cc.
References PLearn::deepCopyField(), PLearn::Splitter::makeDeepCopyFromShallowCopy(), random_gen, and tasks.
{ inherited::makeDeepCopyFromShallowCopy(copies); deepCopyField(tasks, copies); deepCopyField(random_gen, copies); //PLERROR("MultiTaskSeparationSplitter::makeDeepCopyFromShallowCopy not fully (correctly) implemented yet!"); }
int PLearn::MultiTaskSeparationSplitter::nSetsPerSplit | ( | ) | const [virtual] |
Returns the number of sets per split.
Implements PLearn::Splitter.
Definition at line 129 of file MultiTaskSeparationSplitter.cc.
References append_train.
{ return append_train ? 3 : 2; }
int PLearn::MultiTaskSeparationSplitter::nsplits | ( | ) | const [virtual] |
Returns the number of available different "splits".
Implements PLearn::Splitter.
Definition at line 124 of file MultiTaskSeparationSplitter.cc.
References PLearn::TVec< T >::length(), and tasks.
Referenced by getSplit().
{ return tasks.length(); }
void PLearn::MultiTaskSeparationSplitter::setDataSet | ( | VMat | the_dataset | ) | [virtual] |
Sets the dataset on which the splits are to be based.
Reimplemented from PLearn::Splitter.
Definition at line 166 of file MultiTaskSeparationSplitter.cc.
References build(), and PLearn::Splitter::dataset.
Reimplemented from PLearn::Splitter.
Definition at line 108 of file MultiTaskSeparationSplitter.h.
Indication that the training set should be appended to the split sets lists.
Definition at line 75 of file MultiTaskSeparationSplitter.h.
Referenced by declareOptions(), getSplit(), and nSetsPerSplit().
Number of splits. If <= 0, then it is set to nclasses.
Definition at line 64 of file MultiTaskSeparationSplitter.h.
Referenced by build_(), and declareOptions().
PP<PRandom> PLearn::MultiTaskSeparationSplitter::random_gen [protected] |
Definition at line 119 of file MultiTaskSeparationSplitter.h.
Referenced by build_(), makeDeepCopyFromShallowCopy(), and MultiTaskSeparationSplitter().
Seed for random generator.
Definition at line 78 of file MultiTaskSeparationSplitter.h.
Referenced by build_(), and declareOptions().
Indication that the tasks should be chose at random.
Otherwise, the tasks are selected by order of their index.
Definition at line 71 of file MultiTaskSeparationSplitter.h.
Referenced by build_(), and declareOptions().
Tasks to isolate from the others. Determines number of splits.
Definition at line 67 of file MultiTaskSeparationSplitter.h.
Referenced by build_(), declareOptions(), getSplit(), makeDeepCopyFromShallowCopy(), and nsplits().