PLearn 0.1
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Static Protected Member Functions | Private Types | Private Member Functions
PLearn::SVMClassificationTorch Class Reference

#include <SVMClassificationTorch.h>

Inheritance diagram for PLearn::SVMClassificationTorch:
Inheritance graph
[legend]
Collaboration diagram for PLearn::SVMClassificationTorch:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 SVMClassificationTorch ()
 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 OptionListgetOptionList () const
virtual OptionMapgetOptionMap () const
virtual RemoteMethodMapgetRemoteMethodMap () const
virtual SVMClassificationTorchdeepCopy (CopiesMap &copies) const
virtual void computeOutput (const Vec &input, Vec &output) const
 Returns the size of this learner's output, (which typically may depend on its inputsize(), targetsize() and set options).
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 setTrainingSet (VMat training_set, bool call_forget=true)
 Overridden to forward the dataset to the kernel.

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 PPathdeclaringFile ()

Public Attributes

real C
real cache_size
Ker kernel
int iter_msg
bool output_the_class
bool target_01

Static Public Attributes

static StaticInitializer _static_initializer_

Static Protected Member Functions

static void declareOptions (OptionList &ol)
 Declares this class' options.

Private Types

typedef TorchLearner inherited

Private Member Functions

void build_ ()
 This does the actual building.

Detailed Description

Definition at line 52 of file SVMClassificationTorch.h.


Member Typedef Documentation

Reimplemented from PLearn::TorchLearner.

Definition at line 56 of file SVMClassificationTorch.h.


Constructor & Destructor Documentation

PLearn::SVMClassificationTorch::SVMClassificationTorch ( )

Default constructor.

Definition at line 60 of file SVMClassificationTorch.cc.

    : C(100),
      cache_size(50),
      iter_msg(1000),
      output_the_class(true),
      target_01(false)
{}

Member Function Documentation

string PLearn::SVMClassificationTorch::_classname_ ( ) [static]

Reimplemented from PLearn::TorchLearner.

Definition at line 75 of file SVMClassificationTorch.cc.

OptionList & PLearn::SVMClassificationTorch::_getOptionList_ ( ) [static]

Reimplemented from PLearn::TorchLearner.

Definition at line 75 of file SVMClassificationTorch.cc.

RemoteMethodMap & PLearn::SVMClassificationTorch::_getRemoteMethodMap_ ( ) [static]

Reimplemented from PLearn::TorchLearner.

Definition at line 75 of file SVMClassificationTorch.cc.

bool PLearn::SVMClassificationTorch::_isa_ ( const Object o) [static]

Reimplemented from PLearn::TorchLearner.

Definition at line 75 of file SVMClassificationTorch.cc.

Object * PLearn::SVMClassificationTorch::_new_instance_for_typemap_ ( ) [static]

Reimplemented from PLearn::TorchLearner.

Definition at line 75 of file SVMClassificationTorch.cc.

StaticInitializer SVMClassificationTorch::_static_initializer_ & PLearn::SVMClassificationTorch::_static_initialize_ ( ) [static]

Reimplemented from PLearn::TorchLearner.

Definition at line 75 of file SVMClassificationTorch.cc.

void PLearn::SVMClassificationTorch::build ( ) [virtual]

Simply calls inherited::build() then build_().

Reimplemented from PLearn::TorchLearner.

Definition at line 129 of file SVMClassificationTorch.cc.

References PLearn::TorchLearner::build(), and build_().

Here is the call graph for this function:

void PLearn::SVMClassificationTorch::build_ ( ) [private]

This does the actual building.

Reimplemented from PLearn::TorchLearner.

Definition at line 138 of file SVMClassificationTorch.cc.

References PLearn::TorchLearner::build(), C, cache_size, iter_msg, kernel, PLearn::TorchLearner::machine, and PLearn::TorchLearner::trainer.

Referenced by build().

{
    // Build machine.
    if (!machine)
        machine = new TSVMClassification();
    PP<TSVMClassification> svm_class = (TSVMClassification*) (TMachine*) machine;
    svm_class->C = this->C;
    svm_class->cache_size = this->cache_size;
    svm_class->kernel = new TTorchKernelFromKernel(this->kernel);
    svm_class->build();
    // Build trainer.
    if (!trainer)
        trainer = new TQCTrainer();
    PP<TQCTrainer> qc_trainer = (TQCTrainer*) (TTrainer*) this->trainer;
    qc_trainer->qc_machine = (TQCMachine*) (TMachine*) this->machine;
    qc_trainer->iter_msg = this->iter_msg;
    qc_trainer->build();
    // We can now build the TorchLearner.
    inherited::build();
}

Here is the call graph for this function:

Here is the caller graph for this function:

string PLearn::SVMClassificationTorch::classname ( ) const [virtual]

Reimplemented from PLearn::TorchLearner.

Definition at line 75 of file SVMClassificationTorch.cc.

void PLearn::SVMClassificationTorch::computeCostsFromOutputs ( const Vec input,
const Vec output,
const Vec target,
Vec costs 
) const [virtual]

Computes the costs from already computed output.

Reimplemented from PLearn::TorchLearner.

Definition at line 162 of file SVMClassificationTorch.cc.

References PLearn::fast_exact_is_equal(), PLearn::TVec< T >::length(), PLASSERT, PLearn::TVec< T >::resize(), PLearn::sigmoid(), and target_01.

{
    // No cost computed.
    // For safety, we check we are trying to do binary classification with -1
    // and 1, or 0 and 1 when the 'target_01' option is set.
    PLASSERT( target.length() == 1 &&
            ((target_01  && (target[0] == 1 || target[0] == 0)) ||
             (!target_01 && (target[0] == 1 || target[0] == -1))) );
    PLASSERT( output.length() == 1 );
    costs.resize(1);
    real sig_output = sigmoid(output[0]);
    if (fast_exact_is_equal(sig_output, 0))
        sig_output = REAL_EPSILON;
    if (fast_exact_is_equal(target[0], 1))
        costs[0] = sig_output;
    else
        costs[0] = - sig_output;
}                                

Here is the call graph for this function:

void PLearn::SVMClassificationTorch::computeOutput ( const Vec input,
Vec output 
) const [virtual]

Returns the size of this learner's output, (which typically may depend on its inputsize(), targetsize() and set options).

(Re-)initializes the PLearner in its fresh state (that state may depend on the 'seed' option) And sets 'stage' back to 0 (this is the stage of a fresh learner!). The role of the train method is to bring the learner up to stage==nstages, updating the train_stats collector with training costs measured on-line in the process. Computes the output from the input.

Reimplemented from PLearn::TorchLearner.

Definition at line 185 of file SVMClassificationTorch.cc.

References PLearn::TorchLearner::computeOutput(), i, PLearn::TVec< T >::length(), output_the_class, and target_01.

{
    inherited::computeOutput(input, output);
    if (output_the_class)
        for (int i = 0; i < output.length(); i++)
            output[i] = output[i] > 0 ? 1 : target_01 ? 0 : -1;
}    

Here is the call graph for this function:

void PLearn::SVMClassificationTorch::declareOptions ( OptionList ol) [static, protected]

Declares this class' options.

Reimplemented from PLearn::TorchLearner.

Definition at line 80 of file SVMClassificationTorch.cc.

References PLearn::OptionBase::buildoption, C, cache_size, PLearn::declareOption(), PLearn::TorchLearner::declareOptions(), iter_msg, kernel, PLearn::OptionBase::learntoption, PLearn::TorchLearner::machine, PLearn::OptionBase::nosave, output_the_class, PLearn::redeclareOption(), target_01, and PLearn::TorchLearner::trainer.

{
    // ### 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, "kernel", &SVMClassificationTorch::kernel, OptionBase::buildoption,
                  "The kernel we use.");

    declareOption(ol, "C", &SVMClassificationTorch::C, OptionBase::buildoption,
                  "Trade-off margin / error.");

    declareOption(ol, "output_the_class", &SVMClassificationTorch::output_the_class, OptionBase::buildoption,
                  "If set to 1, the output will be the class, otherwise it will be a real value.");

    declareOption(ol, "target_01", &SVMClassificationTorch::target_01,
                                   OptionBase::buildoption,
        "If set to 1, the target in the training set will be assumed to be\n"
        "either 0 or 1 (instead of the default -1 / 1).");

    declareOption(ol, "iter_msg", &SVMClassificationTorch::iter_msg, OptionBase::buildoption,
                  "Number of iterations between each message.");

    declareOption(ol, "cache_size", &SVMClassificationTorch::cache_size, OptionBase::buildoption,
                  "Cache size (in Mb).");

    // Learnt options.

    // declareOption(ol, "myoption", &SVMClassificationTorch::myoption, OptionBase::learntoption,
    //               "Help text describing this option");

    // Now call the parent class' declareOptions.
    inherited::declareOptions(ol);

    // Redeclare some parent's options.
    redeclareOption(ol, "machine", &SVMClassificationTorch::machine, OptionBase::learntoption,
                    "Constructed at build time and saved to store learnt parameters.");

    redeclareOption(ol, "trainer", &SVMClassificationTorch::trainer, OptionBase::nosave,
                    "Constructed at build time (there is no need to save it).");

}

Here is the call graph for this function:

static const PPath& PLearn::SVMClassificationTorch::declaringFile ( ) [inline, static]

Reimplemented from PLearn::TorchLearner.

Definition at line 111 of file SVMClassificationTorch.h.

SVMClassificationTorch * PLearn::SVMClassificationTorch::deepCopy ( CopiesMap copies) const [virtual]

Reimplemented from PLearn::TorchLearner.

Definition at line 75 of file SVMClassificationTorch.cc.

OptionList & PLearn::SVMClassificationTorch::getOptionList ( ) const [virtual]

Reimplemented from PLearn::TorchLearner.

Definition at line 75 of file SVMClassificationTorch.cc.

OptionMap & PLearn::SVMClassificationTorch::getOptionMap ( ) const [virtual]

Reimplemented from PLearn::TorchLearner.

Definition at line 75 of file SVMClassificationTorch.cc.

RemoteMethodMap & PLearn::SVMClassificationTorch::getRemoteMethodMap ( ) const [virtual]

Reimplemented from PLearn::TorchLearner.

Definition at line 75 of file SVMClassificationTorch.cc.

TVec< string > PLearn::SVMClassificationTorch::getTestCostNames ( ) const [virtual]

Returns the names of the costs computed by computeCostsFromOutpus (and thus the test method).

Reimplemented from PLearn::TorchLearner.

Definition at line 213 of file SVMClassificationTorch.cc.

References PLearn::TVec< T >::append(), and PLearn::TVec< T >::isEmpty().

{
    static TVec<string> costs;
    if (costs.isEmpty())
        costs.append("lift_output");
    return costs;
}

Here is the call graph for this function:

TVec< string > PLearn::SVMClassificationTorch::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::TorchLearner.

Definition at line 224 of file SVMClassificationTorch.cc.

References PLearn::TorchLearner::getTrainCostNames().

Here is the call graph for this function:

void PLearn::SVMClassificationTorch::makeDeepCopyFromShallowCopy ( CopiesMap copies) [virtual]

Transforms a shallow copy into a deep copy.

Reimplemented from PLearn::TorchLearner.

Definition at line 232 of file SVMClassificationTorch.cc.

References PLearn::TorchLearner::makeDeepCopyFromShallowCopy(), and PLERROR.

{
    inherited::makeDeepCopyFromShallowCopy(copies);

    // ### ex:
    // deepCopyField(trainvec, copies);

    // ### Remove this line when you have fully implemented this method.
    PLERROR("SVMClassificationTorch::makeDeepCopyFromShallowCopy not fully (correctly) implemented yet!");
}

Here is the call graph for this function:

void PLearn::SVMClassificationTorch::setTrainingSet ( VMat  training_set,
bool  call_forget = true 
) [virtual]

Overridden to forward the dataset to the kernel.

Reimplemented from PLearn::TorchLearner.

Definition at line 246 of file SVMClassificationTorch.cc.

References kernel, PLASSERT, PLearn::TorchLearner::setTrainingSet(), target_01, and PLearn::tostring().

                                                                               {
    VMat the_train_set = training_set;
    if (target_01) {
        // Create processing program.
        int target_col = training_set->inputsize();
        PLASSERT( target_col > 0 );
        string prog = "[%0:%" + tostring(target_col - 1) + "] %" +
            tostring(target_col) + " 1 == 1 -1 ifelse :target";
        if (training_set->weightsize() > 0) {
            int weight_col = training_set->inputsize() +
                             training_set->targetsize();
            prog += " [%" + tostring(weight_col) + ":%" +
                tostring(weight_col + training_set->weightsize() - 1) + "]";
        }
        the_train_set = new ProcessingVMatrix(the_train_set, prog);
    }
    kernel->setDataForKernelMatrix(the_train_set);
    inherited::setTrainingSet(the_train_set, call_forget);
}

Here is the call graph for this function:


Member Data Documentation

Reimplemented from PLearn::TorchLearner.

Definition at line 111 of file SVMClassificationTorch.h.

Definition at line 70 of file SVMClassificationTorch.h.

Referenced by build_(), and declareOptions().

Definition at line 71 of file SVMClassificationTorch.h.

Referenced by build_(), and declareOptions().

Definition at line 73 of file SVMClassificationTorch.h.

Referenced by build_(), and declareOptions().

Definition at line 72 of file SVMClassificationTorch.h.

Referenced by build_(), declareOptions(), and setTrainingSet().

Definition at line 74 of file SVMClassificationTorch.h.

Referenced by computeOutput(), and declareOptions().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines