|
PLearn 0.1
|
#include <ShiftAndRescaleVMatrix.h>


Public Member Functions | |
| ShiftAndRescaleVMatrix (bool call_build_=false) | |
| For all constructors, the original VMFields are copied upon construction. | |
| ShiftAndRescaleVMatrix (VMat the_source, bool call_build_=true) | |
| ShiftAndRescaleVMatrix (VMat the_source, Vec the_shift, Vec the_scale, bool call_build_=true) | |
| ShiftAndRescaleVMatrix (VMat the_source, int the_n_inputs, bool call_build_=true) | |
| ShiftAndRescaleVMatrix (VMat the_source, int the_n_inputs, int the_n_train, bool the_ignore_missing=false, bool the_verbosity=1, bool call_build_=true) | |
| virtual string | classname () const |
| virtual OptionList & | getOptionList () const |
| virtual OptionMap & | getOptionMap () const |
| virtual RemoteMethodMap & | getRemoteMethodMap () const |
| virtual ShiftAndRescaleVMatrix * | deepCopy (CopiesMap &copies) const |
| virtual void | makeDeepCopyFromShallowCopy (CopiesMap &copies) |
| Transform a shallow copy into a deep copy. | |
| virtual void | getNewRow (int i, const Vec &v) const |
| Must be implemented in subclasses: default version returns an error. | |
| virtual void | reset_dimensions () |
| In case the dimensions of an underlying VMat has changed, recompute it. | |
| virtual void | build () |
| Simply calls inherited::build() then build_(). | |
Static Public Member Functions | |
| static string | _classname_ () |
| ShiftAndRescaleVMatrix. | |
| 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 () |
Public Attributes | |
| Vec | shift |
| x'_i = (x_i+shift_i)*scale_i | |
| Vec | scale |
| Vec | min_max |
| real | shared_shift |
| real | shared_scale |
| bool | automatic |
| find shift and scale automatically? | |
| int | n_train |
| when automatic, use the n_train first examples to estimate shift and scale | |
| int | n_inputs |
| bool | negate_shift |
| bool | no_scale |
| TVec< string > | fields |
| int | verbosity |
Static Public Attributes | |
| static StaticInitializer | _static_initializer_ |
Static Protected Member Functions | |
| static void | declareOptions (OptionList &ol) |
| Declares this class' options. | |
Private Types | |
| typedef SourceVMatrix | inherited |
Private Member Functions | |
| void | build_ () |
| This does the actual building. | |
VMatrix that can be used to rescale and shift each feature of the source: x'_i = a_i*(x_i+b_i) This can be used to normalize the inputs of a distribution (see the NormalizeInputDistr function in PLearn.h)
Definition at line 58 of file ShiftAndRescaleVMatrix.h.
typedef SourceVMatrix PLearn::ShiftAndRescaleVMatrix::inherited [private] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 60 of file ShiftAndRescaleVMatrix.h.
| PLearn::ShiftAndRescaleVMatrix::ShiftAndRescaleVMatrix | ( | bool | call_build_ = false | ) |
For all constructors, the original VMFields are copied upon construction.
Definition at line 61 of file ShiftAndRescaleVMatrix.cc.
References build_().
: inherited(call_build_), shared_shift(0), shared_scale(1), automatic(1), n_train(0), n_inputs(-1), negate_shift(false), no_scale(false), verbosity(1) { if( call_build_ ) build_(); }

Definition at line 76 of file ShiftAndRescaleVMatrix.cc.
References build_().
: inherited(the_source, the_source->length(), the_source->width(), call_build_), automatic(1), n_train(0), n_inputs(-1), negate_shift(false), no_scale(false), verbosity(1) { if( call_build_ ) build_(); }

| PLearn::ShiftAndRescaleVMatrix::ShiftAndRescaleVMatrix | ( | VMat | the_source, |
| Vec | the_shift, | ||
| Vec | the_scale, | ||
| bool | call_build_ = true |
||
| ) |
Definition at line 93 of file ShiftAndRescaleVMatrix.cc.
References build_().
: inherited(the_source, the_source->length(), the_source->width(), call_build_), shift(the_shift), scale(the_scale), automatic(0), n_train(0), n_inputs(-1), negate_shift(false), no_scale(false), verbosity(1) { if( call_build_ ) build_(); }

| PLearn::ShiftAndRescaleVMatrix::ShiftAndRescaleVMatrix | ( | VMat | the_source, |
| int | the_n_inputs, | ||
| bool | call_build_ = true |
||
| ) |
Definition at line 114 of file ShiftAndRescaleVMatrix.cc.
References build_().
: inherited(the_source, the_source->length(), the_source->width(), call_build_), shift(the_source->width()), scale(the_source->width()), automatic(1), n_train(0), n_inputs(the_n_inputs), negate_shift(false), no_scale(false), verbosity(1) { if( call_build_ ) build_(); }

| PLearn::ShiftAndRescaleVMatrix::ShiftAndRescaleVMatrix | ( | VMat | the_source, |
| int | the_n_inputs, | ||
| int | the_n_train, | ||
| bool | the_ignore_missing = false, |
||
| bool | the_verbosity = 1, |
||
| bool | call_build_ = true |
||
| ) |
Definition at line 134 of file ShiftAndRescaleVMatrix.cc.
References build_(), and PLDEPRECATED.
: inherited(the_source, the_source->length(), the_source->width(), call_build_), shift(the_source->width()), scale(the_source->width()), automatic(1), n_train(the_n_train), n_inputs(the_n_inputs), negate_shift(false), no_scale(false), verbosity(the_verbosity) { PLDEPRECATED("In ShiftAndRescaleVMatrix::ShiftAndRescaleVMatrix - This " "constructor is deprecated, as it takes an option " "'ignore_missing' that does not exist anymore"); if( call_build_ ) build_(); }

| string PLearn::ShiftAndRescaleVMatrix::_classname_ | ( | ) | [static] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 59 of file ShiftAndRescaleVMatrix.cc.
| OptionList & PLearn::ShiftAndRescaleVMatrix::_getOptionList_ | ( | ) | [static] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 59 of file ShiftAndRescaleVMatrix.cc.
| RemoteMethodMap & PLearn::ShiftAndRescaleVMatrix::_getRemoteMethodMap_ | ( | ) | [static] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 59 of file ShiftAndRescaleVMatrix.cc.
Reimplemented from PLearn::SourceVMatrix.
Definition at line 59 of file ShiftAndRescaleVMatrix.cc.
| Object * PLearn::ShiftAndRescaleVMatrix::_new_instance_for_typemap_ | ( | ) | [static] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 59 of file ShiftAndRescaleVMatrix.cc.
| StaticInitializer ShiftAndRescaleVMatrix::_static_initializer_ & PLearn::ShiftAndRescaleVMatrix::_static_initialize_ | ( | ) | [static] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 59 of file ShiftAndRescaleVMatrix.cc.
| void PLearn::ShiftAndRescaleVMatrix::build | ( | ) | [virtual] |
Simply calls inherited::build() then build_().
Reimplemented from PLearn::SourceVMatrix.
Definition at line 411 of file ShiftAndRescaleVMatrix.cc.
References PLearn::SourceVMatrix::build(), and build_().
{
inherited::build();
build_();
}

| void PLearn::ShiftAndRescaleVMatrix::build_ | ( | ) | [private] |
This does the actual building.
Reimplemented from PLearn::SourceVMatrix.
Definition at line 239 of file ShiftAndRescaleVMatrix.cc.
References automatic, PLearn::computeMeanAndStddev(), PLearn::fast_exact_is_equal(), fields, PLearn::TVec< T >::fill(), PLearn::VMatrix::fill(), PLearn::VMat::getFieldIndex(), i, PLearn::invertElements(), PLearn::TVec< T >::isEmpty(), j, PLearn::TVec< T >::length(), min_max, n_inputs, n_train, negate_shift, PLearn::negateElements(), no_scale, PLASSERT, PLCHECK, PLERROR, PLWARNING, reset_dimensions(), PLearn::TVec< T >::resize(), PLearn::rowMax(), PLearn::rowMin(), scale, PLearn::SourceVMatrix::setMetaInfoFromSource(), shared_scale, shared_shift, shift, PLearn::TVec< T >::size(), PLearn::SourceVMatrix::source, PLearn::VMat::subMatColumns(), PLearn::VMat::subMatRows(), PLearn::TVec< T >::subVec(), PLearn::VMat::toMat(), PLearn::transpose(), verbosity, and PLearn::VMat::width().
Referenced by build(), and ShiftAndRescaleVMatrix().
{
PLASSERT( n_inputs >= 0 || n_inputs == -1 || n_inputs == -2 );
PLCHECK(fields.size()<=0||automatic);
if( source )
{
if (automatic && min_max.isEmpty())
{
if (n_inputs<0)
{
PLCHECK( source->inputsize() >= 0 );
if (n_inputs == -1)
n_inputs = source->inputsize();
else if (n_inputs == -2) {
PLCHECK( source->targetsize() >= 0 );
n_inputs = source->inputsize() + source->targetsize();
} else
PLERROR("In ShiftAndRescaleVMatrix::build_ - Wrong value "
"for 'n_inputs'");
if (n_inputs<0)
PLERROR("ShiftAndRescaleVMatrix: either n_inputs should be"
" provided explicitly\n"
"or the source VMatrix should have a set value of"
" inputsize.\n");
}
if (n_train>0)
computeMeanAndStddev(source.subMatRows(0,n_train),
shift, scale);
else
computeMeanAndStddev(source, shift, scale);
if (!negate_shift)
negateElements(shift);
if (!no_scale) {
for (int i=0;i<scale.length();i++)
if (fast_exact_is_equal(scale[i], 0))
{
if (verbosity >= 1)
PLWARNING("ShiftAndRescale: data column number %d"
" is constant",i);
scale[i]=1;
}
invertElements(scale);
scale.resize(source->width());
scale.subVec(n_inputs, scale.length()-n_inputs).fill(1);
}
if(fields.size()>0){
//we shift and scale only the fields
TVec<int> idx(fields.size());
for(int i=0;i<fields.size();i++){
idx[i]=source->getFieldIndex(fields[i]);
if(idx[i]>n_inputs)
PLERROR("In ShiftAndRescaleVMatrix::build_() - The "
"fields index must be lower or equal to n_inputs");
}
for(int i=0;i<n_inputs;i++){
bool found=false;
for(int j=0;j<idx.size();j++){
if(i==idx[j])
found=true;
}
if(!found){
shift[i]=0;
scale[i]=1;
}
}
}
shift.resize(source->width());
shift.subVec(n_inputs, shift.length()-n_inputs).fill(0);
}
else {
if (!min_max.isEmpty()) {
if ( min_max.length()!=2 )
PLERROR("ShiftAndRescale: min_max should have exactly 2"
"elements(if set)") ;
if ( min_max[0] >= min_max[1])
PLERROR("ShiftAndRescale: min_max[0] should be smaller than"
"min_max[1]") ;
if (n_inputs<0)
{
PLCHECK(source->inputsize()>=0);
if(n_inputs==-1)
n_inputs = source->inputsize();
else if (n_inputs == -2) {
PLCHECK( source->targetsize() >= 0 );
n_inputs = source->inputsize() + source->targetsize();
} else
PLERROR("In ShiftAndRescaleVMatrix::build_ - Wrong value "
"for 'n_inputs'");
}
Vec min_col(n_inputs) , max_col(n_inputs) ;
Mat data = transpose(source.subMatColumns(0,n_inputs).toMat());
rowMin(data , min_col) ;
rowMax(data , max_col) ;
shift.resize(source->width()) ;
shift.subVec(n_inputs, shift.length()-n_inputs).fill(0);
scale.resize(source->width()) ;
scale.subVec(n_inputs, scale.length()-n_inputs).fill(1);
for(int i=0 ; i<n_inputs ; ++i) {
if (fast_exact_is_equal(min_col[i], max_col[i])) {
// Constant column.
shift[i] = (min_max[1] + min_max[0]) / 2 - min_col[i];
scale[i] = 1;
} else {
shift[i] = (max_col[i] - min_col[i]) /
(min_max[1] - min_max[0]) *
(min_max[0] - (min_max[1] - min_max[0])*min_col[i]
/ (max_col[i] - min_col[i]) );
scale[i] = (min_max[1] - min_max[0]) /
(max_col[i] - min_col[i]);
}
}
}
else
{
n_inputs = source->inputsize();
if (n_inputs<0)
{
n_inputs = source->inputsize();
if (n_inputs<0)
PLERROR("ShiftAndRescaleVMatrix: either n_inputs should be"
" provided explicitly\n"
"or the source VMatrix should have a set value of"
" inputsize.\n");
}
if( shift.length() == 0)
{
shift.resize(source->width()) ;
shift.subVec(n_inputs, shift.length()-n_inputs).fill(0);
shift.subVec(0,n_inputs).fill(shared_shift);
}
if( scale.length() == 0)
{
scale.resize(source->width()) ;
scale.subVec(n_inputs, scale.length()-n_inputs).fill(1);
scale.subVec(0,n_inputs).fill(shared_scale);
}
}
}
reset_dimensions();
setMetaInfoFromSource();
}
}


| string PLearn::ShiftAndRescaleVMatrix::classname | ( | ) | const [virtual] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 59 of file ShiftAndRescaleVMatrix.cc.
| void PLearn::ShiftAndRescaleVMatrix::declareOptions | ( | OptionList & | ol | ) | [static, protected] |
Declares this class' options.
Reimplemented from PLearn::SourceVMatrix.
Definition at line 160 of file ShiftAndRescaleVMatrix.cc.
References automatic, PLearn::OptionBase::buildoption, PLearn::declareOption(), PLearn::SourceVMatrix::declareOptions(), fields, PLearn::OptionBase::learntoption, min_max, n_inputs, n_train, negate_shift, no_scale, PLearn::OptionBase::nosave, scale, shared_scale, shared_shift, shift, PLearn::SourceVMatrix::source, and verbosity.
{
declareOption(ol, "underlying_vmat", &ShiftAndRescaleVMatrix::source,
(OptionBase::learntoption | OptionBase::nosave),
"DEPRECATED - Use 'source' instead.");
declareOption(ol, "shift", &ShiftAndRescaleVMatrix::shift,
OptionBase::buildoption,
"Quantity added to each INPUT element of a row of the source"
" vmatrix.");
declareOption(ol, "scale", &ShiftAndRescaleVMatrix::scale,
OptionBase::buildoption,
"Quantity multiplied to each shifted element of a row of the"
" source vmatrix.");
declareOption(ol, "shared_shift", &ShiftAndRescaleVMatrix::shared_shift,
OptionBase::buildoption,
"Quantity added to ALL INPUT elements of a row of the source\n"
"vmatrix. This option is ignored if 'shift' is provided\n"
"or 'automatic' is true.\n");
declareOption(ol, "shared_scale", &ShiftAndRescaleVMatrix::shared_scale,
OptionBase::buildoption,
"Quantity multiplied to ALL shifted INPUT elements of a row of the"
"source vmatrix. This option is ignored if 'scale' is provided,\n"
"'automatic' is true or 'no_scale' is true.\n");
declareOption(ol, "automatic", &ShiftAndRescaleVMatrix::automatic,
OptionBase::buildoption,
"Whether shift and scale are determined from the mean and"
" stddev\n"
"of the source vmatrix, or user-provided.\n");
declareOption(ol, "n_train", &ShiftAndRescaleVMatrix::n_train,
OptionBase::buildoption,
"when automatic, use only the n_train first examples to"
" estimate\n"
"shift and scale, if n_train>0.\n");
declareOption(ol, "n_inputs", &ShiftAndRescaleVMatrix::n_inputs,
OptionBase::buildoption,
"When automatic, shift and scale only the first n_inputs columns.\n"
"Special values are as follows:\n"
" -1 : n_inputs <- source->inputsize()\n"
" -2 : n_inputs <- source->inputsize() + source->targetsize()");
declareOption(ol, "negate_shift", &ShiftAndRescaleVMatrix::negate_shift,
OptionBase::buildoption,
"If set to 1, the shift will be removed instead of added.");
declareOption(ol, "no_scale", &ShiftAndRescaleVMatrix::no_scale,
OptionBase::buildoption,
"If set to 1, no scaling will be performed (only a shift"
" will be applied).");
declareOption(ol, "fields", &ShiftAndRescaleVMatrix::fields,
OptionBase::buildoption,
"The fields to shift and rescale. Automatic must be true and"
" if empty we use instead n_inputs.");
declareOption(ol, "verbosity", &ShiftAndRescaleVMatrix::verbosity,
OptionBase::buildoption,
"Controls the amount of output.");
declareOption(ol, "min_max", &ShiftAndRescaleVMatrix::min_max,
OptionBase::buildoption,
"A vector of size 2 [min,max]. For each column, the elements will be\n"
"shifted and rescaled to be in [min,max]. If set, it will override\n"
"the value of the 'automatic' option. A constant column will be set\n"
"to the average of 'min' and 'max'.");
// Now call the parent class' declareOptions
inherited::declareOptions(ol);
}

| static const PPath& PLearn::ShiftAndRescaleVMatrix::declaringFile | ( | ) | [inline, static] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 104 of file ShiftAndRescaleVMatrix.h.
{
| ShiftAndRescaleVMatrix * PLearn::ShiftAndRescaleVMatrix::deepCopy | ( | CopiesMap & | copies | ) | const [virtual] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 59 of file ShiftAndRescaleVMatrix.cc.
Must be implemented in subclasses: default version returns an error.
Reimplemented from PLearn::SourceVMatrix.
Definition at line 395 of file ShiftAndRescaleVMatrix.cc.
References negate_shift, no_scale, scale, shift, and PLearn::SourceVMatrix::source.
| OptionList & PLearn::ShiftAndRescaleVMatrix::getOptionList | ( | ) | const [virtual] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 59 of file ShiftAndRescaleVMatrix.cc.
| OptionMap & PLearn::ShiftAndRescaleVMatrix::getOptionMap | ( | ) | const [virtual] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 59 of file ShiftAndRescaleVMatrix.cc.
| RemoteMethodMap & PLearn::ShiftAndRescaleVMatrix::getRemoteMethodMap | ( | ) | const [virtual] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 59 of file ShiftAndRescaleVMatrix.cc.
| void PLearn::ShiftAndRescaleVMatrix::makeDeepCopyFromShallowCopy | ( | CopiesMap & | copies | ) | [virtual] |
Transform a shallow copy into a deep copy.
Reimplemented from PLearn::SourceVMatrix.
Definition at line 420 of file ShiftAndRescaleVMatrix.cc.
References PLearn::deepCopyField(), PLearn::SourceVMatrix::makeDeepCopyFromShallowCopy(), min_max, scale, and shift.
{
inherited::makeDeepCopyFromShallowCopy(copies);
deepCopyField(shift, copies);
deepCopyField(scale, copies);
deepCopyField(min_max, copies);
}

| virtual void PLearn::ShiftAndRescaleVMatrix::reset_dimensions | ( | ) | [inline, virtual] |
In case the dimensions of an underlying VMat has changed, recompute it.
Reimplemented from PLearn::VMatrix.
Definition at line 111 of file ShiftAndRescaleVMatrix.h.
References PLERROR.
Referenced by build_().
{
if (width_>0 && width_!=source->width())
PLERROR("ShiftAndRescaleVMatrix: can't change width");
inherited::reset_dimensions();
}

Reimplemented from PLearn::SourceVMatrix.
Definition at line 104 of file ShiftAndRescaleVMatrix.h.
find shift and scale automatically?
Definition at line 75 of file ShiftAndRescaleVMatrix.h.
Referenced by build_(), and declareOptions().
Definition at line 83 of file ShiftAndRescaleVMatrix.h.
Referenced by build_(), and declareOptions().
Definition at line 69 of file ShiftAndRescaleVMatrix.h.
Referenced by build_(), declareOptions(), and makeDeepCopyFromShallowCopy().
Definition at line 80 of file ShiftAndRescaleVMatrix.h.
Referenced by build_(), and declareOptions().
when automatic, use the n_train first examples to estimate shift and scale
Definition at line 79 of file ShiftAndRescaleVMatrix.h.
Referenced by build_(), and declareOptions().
Definition at line 81 of file ShiftAndRescaleVMatrix.h.
Referenced by build_(), declareOptions(), and getNewRow().
Definition at line 82 of file ShiftAndRescaleVMatrix.h.
Referenced by build_(), declareOptions(), and getNewRow().
Definition at line 68 of file ShiftAndRescaleVMatrix.h.
Referenced by build_(), declareOptions(), getNewRow(), and makeDeepCopyFromShallowCopy().
Definition at line 72 of file ShiftAndRescaleVMatrix.h.
Referenced by build_(), and declareOptions().
Definition at line 71 of file ShiftAndRescaleVMatrix.h.
Referenced by build_(), and declareOptions().
x'_i = (x_i+shift_i)*scale_i
Definition at line 67 of file ShiftAndRescaleVMatrix.h.
Referenced by build_(), declareOptions(), getNewRow(), and makeDeepCopyFromShallowCopy().
Definition at line 84 of file ShiftAndRescaleVMatrix.h.
Referenced by build_(), and declareOptions().
1.7.4