PLearn 0.1
|
The first sentence should be a BRIEF DESCRIPTION of what the class does. More...
#include <VerifyGradientCommand.h>
Public Member Functions | |
VerifyGradientCommand () | |
virtual void | run (const std::vector< std::string > &args) |
The actual implementation of the 'VerifyGradientCommand' command. | |
Static Protected Attributes | |
static PLearnCommandRegistry | reg_ |
This allows to register the 'VerifyGradientCommand' command in the command registry. | |
Private Types | |
typedef PLearnCommand | inherited |
The first sentence should be a BRIEF DESCRIPTION of what the class does.
Place the rest of the class programmer documentation here. Doxygen supports Javadoc-style comments. See http://www.doxygen.org/manual.html
Definition at line 58 of file VerifyGradientCommand.h.
typedef PLearnCommand PLearn::VerifyGradientCommand::inherited [private] |
Definition at line 60 of file VerifyGradientCommand.h.
PLearn::VerifyGradientCommand::VerifyGradientCommand | ( | ) |
Definition at line 51 of file VerifyGradientCommand.cc.
: PLearnCommand( "verify_gradient", "Verifies the gradient computation in a Variable through finite differences.", "verify_gradient 'MyVariable()' stepsize which_component input1_length input1_width input1_min input1_max input2_length input2_width input2_min input2_max \n" "The variable constructor can take option=value arguments if needed.\n" "stepsize is the size of the step taken for finite difference\n" "which_component specifies which element of MyVariable we feed gradients in (if MyVariable is not a scalar for ex.)\n" "if which_component is -1, then all elements will be fed gradient (same as considering gradient to the sum of all elements)\n" "input1_... and input2_... are required if the variable is a unary resp. binary variable.\n" "SourceVariables input1 and input2 of the specified size will be constructed \n" "and randomly initialized with a uniform between corresponding min and max.\n" ) {}
void PLearn::VerifyGradientCommand::run | ( | const std::vector< std::string > & | args | ) | [virtual] |
The actual implementation of the 'VerifyGradientCommand' command.
Implements PLearn::PLearnCommand.
Definition at line 67 of file VerifyGradientCommand.cc.
References PLearn::TVec< T >::append(), PLearn::PRandom::common(), PLearn::endl(), PLearn::newObject(), PLearn::perr, PLERROR, PLearn::pout, PLearn::SourceVariable::randomInitialize(), PLearn::todouble(), PLearn::toint(), PLearn::var(), and w.
{ if(args.size()<2) PLERROR("Not enough arguments provided"); string varspec = args[0]; Object* obj = newObject(varspec); Variable* varp = dynamic_cast<Variable*>(obj); if(!varp) PLERROR("The object you specified does not seem to be a known Variable (is it spelled correctly, did your executable link with it?)"); Var var = varp; double stepsize = todouble(args[1]); int which_component = toint(args[2]); unsigned int nparents = (args.size()-3)/4; if(3+nparents*4 != args.size()) PLERROR("You must specify 4 numbers (length, width, min, max) for each of the parents variable"); VarArray parents; for(unsigned int k=0; k<nparents; k++) { int l = toint(args[3+k*4]); int w = toint(args[3+k*4+1]); double mi = todouble(args[3+k*4+2]); double ma = todouble(args[3+k*4+3]); perr << "Params: " << l << " " << w << " " << mi << " " << ma << endl; SourceVariable* sourcevar = new SourceVariable(l, w, "uniform", mi, ma); sourcevar->randomInitialize(PRandom::common()); Var inputk = sourcevar; parents.append(inputk); } var->setParents(parents); var->build(); pout << "parents:" << *parents[0] << endl; Func f(parents, var); pout << "func inputs:" << *(f->inputs[0]) << endl; f->verifyGradient(stepsize, which_component); }
PLearnCommandRegistry PLearn::VerifyGradientCommand::reg_ [static, protected] |
This allows to register the 'VerifyGradientCommand' command in the command registry.
Definition at line 67 of file VerifyGradientCommand.h.