PLearn 0.1
|
#include <GaussMixLocalProjections.h>
Public Member Functions | |
GaussMixLocalProjections () | |
Default constructor. | |
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 GaussMixLocalProjections * | deepCopy (CopiesMap &copies) const |
virtual int | outputsize () const |
Returns the size of this learner's output, (which typically may depend on its inputsize(), targetsize() and set options). | |
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 TVec< std::string > | getTestCostNames () const |
Returns the names of the costs computed by computeCostsFromOutpus (and thus the test method). | |
virtual TVec< std::string > | getTrainCostNames () const |
Returns the names of the objective costs that the train method computes and for which it updates the VecStatsCollector train_stats. | |
virtual void | computeOutputAndCosts (const Vec &input, const Vec &target, Vec &output, Vec &costs) const |
Overridden to use the default PLearner implementation. | |
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 () |
Static Public Attributes | |
static StaticInitializer | _static_initializer_ |
Static Protected Member Functions | |
static void | declareOptions (OptionList &ol) |
Declares this class' options. | |
Protected Attributes | |
PP< GaussMix > | gauss_mix |
The underlying learner (same as the inherited learner_ member), but specifically a GaussMix learner. | |
int | n_components |
TVec< int > | outputsizes |
Private Types | |
typedef EmbeddedLearner | inherited |
Private Member Functions | |
void | build_ () |
This does the actual building. |
Definition at line 52 of file GaussMixLocalProjections.h.
typedef EmbeddedLearner PLearn::GaussMixLocalProjections::inherited [private] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 56 of file GaussMixLocalProjections.h.
PLearn::GaussMixLocalProjections::GaussMixLocalProjections | ( | ) |
Default constructor.
Definition at line 52 of file GaussMixLocalProjections.cc.
: n_components(-1) { }
string PLearn::GaussMixLocalProjections::_classname_ | ( | ) | [static] |
Declares name and deepCopy methods.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 67 of file GaussMixLocalProjections.cc.
OptionList & PLearn::GaussMixLocalProjections::_getOptionList_ | ( | ) | [static] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 67 of file GaussMixLocalProjections.cc.
RemoteMethodMap & PLearn::GaussMixLocalProjections::_getRemoteMethodMap_ | ( | ) | [static] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 67 of file GaussMixLocalProjections.cc.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 67 of file GaussMixLocalProjections.cc.
Object * PLearn::GaussMixLocalProjections::_new_instance_for_typemap_ | ( | ) | [static] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 67 of file GaussMixLocalProjections.cc.
StaticInitializer GaussMixLocalProjections::_static_initializer_ & PLearn::GaussMixLocalProjections::_static_initialize_ | ( | ) | [static] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 67 of file GaussMixLocalProjections.cc.
void PLearn::GaussMixLocalProjections::build | ( | ) | [virtual] |
Simply calls inherited::build() then build_().
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 107 of file GaussMixLocalProjections.cc.
References PLearn::EmbeddedLearner::build(), and build_().
{ inherited::build(); build_(); }
void PLearn::GaussMixLocalProjections::build_ | ( | ) | [private] |
This does the actual building.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 116 of file GaussMixLocalProjections.cc.
References PLearn::TVec< T >::fill(), gauss_mix, PLearn::EmbeddedLearner::inputsize(), PLearn::EmbeddedLearner::learner_, n_components, outputsizes, PLERROR, and PLearn::TVec< T >::resize().
Referenced by build().
{ // ### This method should do the real building of the object, // ### according to set 'options', in *any* situation. // ### Typical situations include: // ### - Initial building of an object from a few user-specified options // ### - Building of a "reloaded" object: i.e. from the complete set of all serialised options. // ### - Updating or "re-building" of an object after a few "tuning" options have been modified. // ### You should assume that the parent class' build_() has already been called. if (learner_) { if (learner_->classname() != "GaussMix") PLERROR("In GaussMixLocalProjections::build_ - A GaussMix learner is needed"); gauss_mix = (GaussMix*) (PLearner*) learner_; if (gauss_mix->type != "general") PLERROR("In GaussMixLocalProjections::build_ - The underlying GaussMix " "distribution must be of type 'general'"); n_components = gauss_mix->L; outputsizes.resize(n_components); outputsizes.fill(gauss_mix->n_eigen >= 0 ? gauss_mix->n_eigen : inputsize()); } }
string PLearn::GaussMixLocalProjections::classname | ( | ) | const [virtual] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 67 of file GaussMixLocalProjections.cc.
void PLearn::GaussMixLocalProjections::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 141 of file GaussMixLocalProjections.cc.
{
// No cost computed.
}
void PLearn::GaussMixLocalProjections::computeOutput | ( | const Vec & | input, |
Vec & | output | ||
) | const [virtual] |
Computes the output from the input.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 150 of file GaussMixLocalProjections.cc.
References PLearn::exp(), gauss_mix, PLearn::TVec< T >::length(), PLERROR, PLearn::product(), PLearn::TVec< T >::resize(), and PLearn::TVec< T >::subVec().
{ Mat eigen_vec; int size_k = gauss_mix->n_eigen > 0 ? gauss_mix->n_eigen : input.length(); output.resize((size_k + 1) * gauss_mix->L); int index = 0; // Compute densities in order to be able to get posteriors. real log_density = gauss_mix->log_density(input); Vec log_likelihood_dens; // log_likelihood_dens = gauss_mix->getLogLikelihoodDens(); PLERROR("In GaussMixLocalProjections::computeOutput - The line above must " "be uncommented (will not work with the modified GaussMix)"); for (int k = 0; k < gauss_mix->L; k++) { // Obtain the (right number of) eigenvectors. output[index] = 1.0; // eigen_vec = gauss_mix->getEigenvectors(k).subMatRows(0, size_k); PLERROR("In GaussMixLocalProjections::computeOutput - The line above " "must be uncommented (will not work with the modified " "GaussMix)"); // Compute local coordinates. product(output.subVec(index+1, size_k), eigen_vec, input); // Scale by the responsibility. output.subVec(index, size_k + 1) *= exp(log_likelihood_dens[k] - log_density); index += size_k + 1; } }
virtual void PLearn::GaussMixLocalProjections::computeOutputAndCosts | ( | const Vec & | input, |
const Vec & | target, | ||
Vec & | output, | ||
Vec & | costs | ||
) | const [inline, virtual] |
Overridden to use the default PLearner implementation.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 146 of file GaussMixLocalProjections.h.
{ return PLearner::computeOutputAndCosts(input, target, output, costs); }
void PLearn::GaussMixLocalProjections::declareOptions | ( | OptionList & | ol | ) | [static, protected] |
Declares this class' options.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 72 of file GaussMixLocalProjections.cc.
References PLearn::declareOption(), PLearn::EmbeddedLearner::declareOptions(), PLearn::OptionBase::learntoption, n_components, PLearn::OptionBase::nosave, PLearn::PLearner::nstages, outputsizes, PLearn::redeclareOption(), and PLearn::PLearner::seed_.
{ // ### 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 // Build options. // declareOption(ol, "myoption", &GaussMixLocalProjections::myoption, OptionBase::buildoption, // "Help text describing this option"); // ... // Learnt options. declareOption(ol, "n_components", &GaussMixLocalProjections::n_components, OptionBase::learntoption, "Equal to learner->L, i.e. the number of components in the mixture."); declareOption(ol, "outputsizes", &GaussMixLocalProjections::outputsizes, OptionBase::learntoption, "The size of the projection for each Gaussian, i.e. learner->n_eigen."); // Now call the parent class' declareOptions. inherited::declareOptions(ol); redeclareOption(ol, "seed", &GaussMixLocalProjections::seed_, OptionBase::nosave, "No need for a seed."); redeclareOption(ol, "nstages", &GaussMixLocalProjections::nstages, OptionBase::nosave, "One only needs to specify mixture->nstages."); }
static const PPath& PLearn::GaussMixLocalProjections::declaringFile | ( | ) | [inline, static] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 111 of file GaussMixLocalProjections.h.
GaussMixLocalProjections * PLearn::GaussMixLocalProjections::deepCopy | ( | CopiesMap & | copies | ) | const [virtual] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 67 of file GaussMixLocalProjections.cc.
OptionList & PLearn::GaussMixLocalProjections::getOptionList | ( | ) | const [virtual] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 67 of file GaussMixLocalProjections.cc.
OptionMap & PLearn::GaussMixLocalProjections::getOptionMap | ( | ) | const [virtual] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 67 of file GaussMixLocalProjections.cc.
RemoteMethodMap & PLearn::GaussMixLocalProjections::getRemoteMethodMap | ( | ) | const [virtual] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 67 of file GaussMixLocalProjections.cc.
TVec< string > PLearn::GaussMixLocalProjections::getTestCostNames | ( | ) | const [virtual] |
Returns the names of the costs computed by computeCostsFromOutpus (and thus the test method).
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 180 of file GaussMixLocalProjections.cc.
{ static TVec<string> noCost; return noCost; }
TVec< string > PLearn::GaussMixLocalProjections::getTrainCostNames | ( | ) | const [virtual] |
Returns the names of the objective costs that the train method computes and for which it updates the VecStatsCollector train_stats.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 189 of file GaussMixLocalProjections.cc.
{ static TVec<string> noCost; return noCost; }
void PLearn::GaussMixLocalProjections::makeDeepCopyFromShallowCopy | ( | CopiesMap & | copies | ) | [virtual] |
Transforms a shallow copy into a deep copy.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 198 of file GaussMixLocalProjections.cc.
References PLearn::EmbeddedLearner::makeDeepCopyFromShallowCopy(), and PLERROR.
{ inherited::makeDeepCopyFromShallowCopy(copies); // ### ex: // deepCopyField(trainvec, copies); // ### Remove this line when you have fully implemented this method. PLERROR("GaussMixLocalProjections::makeDeepCopyFromShallowCopy not fully (correctly) implemented yet!"); }
int PLearn::GaussMixLocalProjections::outputsize | ( | ) | const [virtual] |
Returns the size of this learner's output, (which typically may depend on its inputsize(), targetsize() and set options).
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 212 of file GaussMixLocalProjections.cc.
References n_components, outputsizes, and PLearn::sum().
{ return sum(outputsizes) + n_components; }
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 111 of file GaussMixLocalProjections.h.
PP<GaussMix> PLearn::GaussMixLocalProjections::gauss_mix [protected] |
The underlying learner (same as the inherited learner_ member), but specifically a GaussMix learner.
Definition at line 62 of file GaussMixLocalProjections.h.
Referenced by build_(), and computeOutput().
int PLearn::GaussMixLocalProjections::n_components [protected] |
Definition at line 68 of file GaussMixLocalProjections.h.
Referenced by build_(), declareOptions(), and outputsize().
TVec<int> PLearn::GaussMixLocalProjections::outputsizes [protected] |
Definition at line 69 of file GaussMixLocalProjections.h.
Referenced by build_(), declareOptions(), and outputsize().