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

Computes the softmax function on a vector. More...

#include <SoftmaxModule.h>

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

List of all members.

Public Member Functions

 SoftmaxModule ()
 Default constructor.
virtual void fprop (const Vec &input, Vec &output) const
 given the input, compute the output (possibly resize it appropriately)
virtual void fprop (const Mat &inputs, Mat &outputs)
 Overridden.
virtual void bpropUpdate (const Vec &input, const Vec &output, Vec &input_gradient, const Vec &output_gradient, bool accumulate=false)
 this version allows to obtain the input gradient as well
virtual void bpropUpdate (const Mat &inputs, const Mat &outputs, Mat &input_gradients, const Mat &output_gradients, bool accumulate=false)
 SOON TO BE DEPRECATED, USE bpropAccUpdate(const TVec<Mat*>& ports_value, const TVec<Mat*>& ports_gradient)
virtual void bbpropUpdate (const Vec &input, const Vec &output, Vec &input_gradient, const Vec &output_gradient, Vec &input_diag_hessian, const Vec &output_diag_hessian, bool accumulate=false)
 this version allows to obtain the input gradient and diag_hessian
virtual void forget ()
 reset the parameters to the state they would be BEFORE starting training.
virtual void setLearningRate (real dynamic_learning_rate)
 Overridden to do nothing (no warning message in particular).
virtual string classname () const
virtual OptionListgetOptionList () const
virtual OptionMapgetOptionMap () const
virtual RemoteMethodMapgetRemoteMethodMap () const
virtual SoftmaxModuledeepCopy (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 PPathdeclaringFile ()

Static Public Attributes

static StaticInitializer _static_initializer_

Static Protected Member Functions

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

Private Types

typedef OnlineLearningModule inherited

Private Member Functions

void build_ ()
 This does the actual building.

Detailed Description

Computes the softmax function on a vector.

Definition at line 50 of file SoftmaxModule.h.


Member Typedef Documentation

Reimplemented from PLearn::OnlineLearningModule.

Definition at line 52 of file SoftmaxModule.h.


Constructor & Destructor Documentation

PLearn::SoftmaxModule::SoftmaxModule ( )

Default constructor.

Definition at line 56 of file SoftmaxModule.cc.

{}

Member Function Documentation

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

Reimplemented from PLearn::OnlineLearningModule.

Definition at line 51 of file SoftmaxModule.cc.

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

Reimplemented from PLearn::OnlineLearningModule.

Definition at line 51 of file SoftmaxModule.cc.

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

Reimplemented from PLearn::OnlineLearningModule.

Definition at line 51 of file SoftmaxModule.cc.

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

Reimplemented from PLearn::OnlineLearningModule.

Definition at line 51 of file SoftmaxModule.cc.

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

Reimplemented from PLearn::Object.

Definition at line 51 of file SoftmaxModule.cc.

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

Reimplemented from PLearn::OnlineLearningModule.

Definition at line 51 of file SoftmaxModule.cc.

void PLearn::SoftmaxModule::bbpropUpdate ( const Vec input,
const Vec output,
Vec input_gradient,
const Vec output_gradient,
Vec input_diag_hessian,
const Vec output_diag_hessian,
bool  accumulate = false 
) [virtual]

this version allows to obtain the input gradient and diag_hessian

Reimplemented from PLearn::OnlineLearningModule.

Definition at line 200 of file SoftmaxModule.cc.

References PLERROR.

{
    PLERROR( "Not implemented yet, please come back later or complain to"
             " lamblinp." );
}
void PLearn::SoftmaxModule::bpropUpdate ( const Vec input,
const Vec output,
Vec input_gradient,
const Vec output_gradient,
bool  accumulate = false 
) [virtual]

this version allows to obtain the input gradient as well

Reimplemented from PLearn::OnlineLearningModule.

Definition at line 122 of file SoftmaxModule.cc.

References PLearn::TVec< T >::clear(), PLearn::dot(), i, PLASSERT, PLASSERT_MSG, PLearn::TVec< T >::resize(), and PLearn::TVec< T >::size().

{
    PLASSERT( input.size() == input_size );
    PLASSERT( output.size() == output_size );
    PLASSERT( output_gradient.size() == output_size );

    if( accumulate )
    {
        PLASSERT_MSG( input_gradient.size() == input_size,
                      "Cannot resize input_gradient AND accumulate into it" );
    }
    else
    {
        input_gradient.resize( input_size );
        input_gradient.clear();
    }

    // input_gradient[i] = output_gradient[i] * output[i]
    //                  - (output_gradient . output ) output[i]
    real outg_dot_out = dot( output_gradient, output );
    for( int i=0 ; i<input_size ; i++ )
    {
        real in_grad_i = (output_gradient[i] - outg_dot_out) * output[i];
        input_gradient[i] += in_grad_i;
    }
}

Here is the call graph for this function:

void PLearn::SoftmaxModule::bpropUpdate ( const Mat inputs,
const Mat outputs,
Mat input_gradients,
const Mat output_gradients,
bool  accumulate = false 
) [virtual]

SOON TO BE DEPRECATED, USE bpropAccUpdate(const TVec<Mat*>& ports_value, const TVec<Mat*>& ports_gradient)

Reimplemented from PLearn::OnlineLearningModule.

Definition at line 152 of file SoftmaxModule.cc.

References PLearn::dot(), PLearn::TMat< T >::fill(), i, j, PLearn::TMat< T >::length(), PLASSERT, PLASSERT_MSG, PLearn::TMat< T >::resize(), and PLearn::TMat< T >::width().

{
    PLASSERT( inputs.width() == input_size );
    PLASSERT( outputs.width() == output_size );
    PLASSERT( output_gradients.width() == output_size );

    if( accumulate )
    {
        PLASSERT_MSG( input_gradients.width() == input_size &&
                input_gradients.length() == inputs.length(),
                "Cannot resize input_gradients and accumulate into it" );
    }
    else
    {
        input_gradients.resize(inputs.length(), input_size);
        input_gradients.fill(0);
    }

    for (int j = 0; j < inputs.length(); j++) {
        // input_gradient[i] = output_gradient[i] * output[i]
        //                  - (output_gradient . output ) output[i]
        real outg_dot_out = dot(output_gradients(j), outputs(j));
        for( int i=0 ; i<input_size ; i++ )
            input_gradients(j, i) +=
                (output_gradients(j, i) - outg_dot_out) * outputs(j, i);
    }
}

Here is the call graph for this function:

void PLearn::SoftmaxModule::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::OnlineLearningModule.

Definition at line 85 of file SoftmaxModule.cc.

Referenced by PLearn::TopDownAsymetricDeepNetwork::build_output_layer_and_cost(), PLearn::StackedFocusedAutoassociatorsNet::build_output_layer_and_cost(), and PLearn::DiscriminativeDeepBeliefNet::build_output_layer_and_cost().

Here is the caller graph for this function:

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

This does the actual building.

Reimplemented from PLearn::OnlineLearningModule.

Definition at line 77 of file SoftmaxModule.cc.

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

Reimplemented from PLearn::Object.

Definition at line 51 of file SoftmaxModule.cc.

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

Declares the class options.

Reimplemented from PLearn::OnlineLearningModule.

Definition at line 62 of file SoftmaxModule.cc.

References PLearn::OptionBase::nosave, PLearn::OnlineLearningModule::output_size, and PLearn::redeclareOption().

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

    // Hide unused options.

    redeclareOption(ol, "output_size", &SoftmaxModule::output_size,
                    OptionBase::nosave,
                    "Set at build time.");
}

Here is the call graph for this function:

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

Reimplemented from PLearn::OnlineLearningModule.

Definition at line 104 of file SoftmaxModule.h.

:
    //#####  Protected Member Functions  ######################################
SoftmaxModule * PLearn::SoftmaxModule::deepCopy ( CopiesMap copies) const [virtual]

Reimplemented from PLearn::OnlineLearningModule.

Definition at line 51 of file SoftmaxModule.cc.

void PLearn::SoftmaxModule::forget ( ) [virtual]

reset the parameters to the state they would be BEFORE starting training.

Note that this method is necessarily called from build().

Implements PLearn::OnlineLearningModule.

Definition at line 186 of file SoftmaxModule.cc.

{
}
void PLearn::SoftmaxModule::fprop ( const Mat inputs,
Mat outputs 
) [virtual]

Overridden.

Reimplemented from PLearn::OnlineLearningModule.

Definition at line 110 of file SoftmaxModule.cc.

References i, PLearn::TMat< T >::length(), n, PLASSERT, PLearn::TMat< T >::resize(), PLearn::softmax(), and PLearn::TMat< T >::width().

{
    PLASSERT( inputs.width() == input_size );
    int n = inputs.length();
    outputs.resize(n, output_size );
    for (int i = 0; i < n; i++)
        softmax(inputs(i), outputs(i));
}

Here is the call graph for this function:

void PLearn::SoftmaxModule::fprop ( const Vec input,
Vec output 
) const [virtual]

given the input, compute the output (possibly resize it appropriately)

Reimplemented from PLearn::OnlineLearningModule.

Definition at line 102 of file SoftmaxModule.cc.

References PLASSERT, PLearn::TVec< T >::resize(), PLearn::TVec< T >::size(), and PLearn::softmax().

{
    PLASSERT( input.size() == input_size );
    output.resize( output_size );

    softmax( input, output );
}

Here is the call graph for this function:

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

Reimplemented from PLearn::Object.

Definition at line 51 of file SoftmaxModule.cc.

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

Reimplemented from PLearn::Object.

Definition at line 51 of file SoftmaxModule.cc.

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

Reimplemented from PLearn::Object.

Definition at line 51 of file SoftmaxModule.cc.

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

Transforms a shallow copy into a deep copy.

Reimplemented from PLearn::OnlineLearningModule.

Definition at line 94 of file SoftmaxModule.cc.

void PLearn::SoftmaxModule::setLearningRate ( real  dynamic_learning_rate) [virtual]

Overridden to do nothing (no warning message in particular).

Reimplemented from PLearn::OnlineLearningModule.

Definition at line 193 of file SoftmaxModule.cc.

{
}

Member Data Documentation

Reimplemented from PLearn::OnlineLearningModule.

Definition at line 104 of file SoftmaxModule.h.


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