|
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.
1.7.4