PLearn 0.1
|
#include <LocalNeighborsDifferencesVMatrix.h>
Public Member Functions | |
LocalNeighborsDifferencesVMatrix () | |
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 OptionList & | getOptionList () const |
virtual OptionMap & | getOptionMap () const |
virtual RemoteMethodMap & | getRemoteMethodMap () const |
virtual LocalNeighborsDifferencesVMatrix * | deepCopy (CopiesMap &copies) const |
Static Public Member Functions | |
static string | _classname_ () |
Declares name and deepCopy methods. | |
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 | |
int | n_neighbors |
bool | concat_neighbors |
bool | append_indexes |
bool | append_neighbors |
Static Public Attributes | |
static StaticInitializer | _static_initializer_ |
Protected Member Functions | |
virtual void | getNewRow (int i, const Vec &v) const |
This is the only method requiring implementation. | |
Static Protected Member Functions | |
static void | declareOptions (OptionList &ol) |
Declares this class' options. | |
Protected Attributes | |
TMat< int > | neighbors |
Private Types | |
typedef SourceVMatrix | inherited |
Private Member Functions | |
void | build_ () |
This does the actual building. | |
Private Attributes | |
Vec | neighbor_row |
Used to store data and save memory allocations. | |
Vec | ith_row |
Vec | a_row |
Vec | diff_k |
Definition at line 52 of file LocalNeighborsDifferencesVMatrix.h.
typedef SourceVMatrix PLearn::LocalNeighborsDifferencesVMatrix::inherited [private] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 57 of file LocalNeighborsDifferencesVMatrix.h.
PLearn::LocalNeighborsDifferencesVMatrix::LocalNeighborsDifferencesVMatrix | ( | ) |
Definition at line 52 of file LocalNeighborsDifferencesVMatrix.cc.
:inherited(), n_neighbors(-1), concat_neighbors(false), append_indexes(false) /* ### Initialise all fields to their default value */ { }
string PLearn::LocalNeighborsDifferencesVMatrix::_classname_ | ( | ) | [static] |
Declares name and deepCopy methods.
Reimplemented from PLearn::SourceVMatrix.
Definition at line 63 of file LocalNeighborsDifferencesVMatrix.cc.
OptionList & PLearn::LocalNeighborsDifferencesVMatrix::_getOptionList_ | ( | ) | [static] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 63 of file LocalNeighborsDifferencesVMatrix.cc.
RemoteMethodMap & PLearn::LocalNeighborsDifferencesVMatrix::_getRemoteMethodMap_ | ( | ) | [static] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 63 of file LocalNeighborsDifferencesVMatrix.cc.
Reimplemented from PLearn::SourceVMatrix.
Definition at line 63 of file LocalNeighborsDifferencesVMatrix.cc.
Object * PLearn::LocalNeighborsDifferencesVMatrix::_new_instance_for_typemap_ | ( | ) | [static] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 63 of file LocalNeighborsDifferencesVMatrix.cc.
StaticInitializer LocalNeighborsDifferencesVMatrix::_static_initializer_ & PLearn::LocalNeighborsDifferencesVMatrix::_static_initialize_ | ( | ) | [static] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 63 of file LocalNeighborsDifferencesVMatrix.cc.
void PLearn::LocalNeighborsDifferencesVMatrix::build | ( | ) | [virtual] |
Simply calls inherited::build() then build_().
Reimplemented from PLearn::SourceVMatrix.
Definition at line 179 of file LocalNeighborsDifferencesVMatrix.cc.
References PLearn::SourceVMatrix::build(), and build_().
Referenced by PLearn::local_neighbors_differences().
{ inherited::build(); build_(); }
void PLearn::LocalNeighborsDifferencesVMatrix::build_ | ( | ) | [private] |
This does the actual building.
Reimplemented from PLearn::SourceVMatrix.
Definition at line 145 of file LocalNeighborsDifferencesVMatrix.cc.
References a_row, append_indexes, append_neighbors, PLearn::computeNearestNeighbors(), concat_neighbors, i, PLearn::VMat::length(), PLearn::TMat< T >::length(), PLearn::VMatrix::length_, n_neighbors, neighbors, PLearn::TVec< T >::resize(), PLearn::TMat< T >::resize(), PLearn::SourceVMatrix::source, PLearn::VMatrix::updateMtime(), PLearn::VMat::width(), and PLearn::VMatrix::width_.
Referenced by build().
{ // find the nearest neighbors, if not done already if (source && (neighbors.length()==0 || source->length()!=length_ || source->width()*n_neighbors!=width_)) // will not work if source is changed but has the same dimensions { if (concat_neighbors) { width_ = source->width(); if(append_indexes) width_ += 2; if(append_neighbors) width_ += source->width(); } else { width_ = source->width()*n_neighbors; if(append_indexes) width_ += n_neighbors+1; if(append_neighbors) width_ += source->width()*n_neighbors; } length_ = source->length(); neighbors.resize(source->length(),n_neighbors); a_row.resize(source->width()); for (int i=0;i<source->length();i++) { source->getRow(i,a_row); TVec<int> neighbors_of_i = neighbors(i); computeNearestNeighbors(source,a_row,neighbors_of_i,i); } } updateMtime(source); }
string PLearn::LocalNeighborsDifferencesVMatrix::classname | ( | ) | const [virtual] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 63 of file LocalNeighborsDifferencesVMatrix.cc.
void PLearn::LocalNeighborsDifferencesVMatrix::declareOptions | ( | OptionList & | ol | ) | [static, protected] |
Declares this class' options.
Reimplemented from PLearn::SourceVMatrix.
Definition at line 126 of file LocalNeighborsDifferencesVMatrix.cc.
References append_indexes, PLearn::OptionBase::buildoption, concat_neighbors, PLearn::declareOption(), PLearn::SourceVMatrix::declareOptions(), and n_neighbors.
{ declareOption(ol, "n_neighbors", &LocalNeighborsDifferencesVMatrix::n_neighbors, OptionBase::buildoption, "Number of nearest neighbors. Determines the width of this vmatrix, which\n" "is source->width() * n_neighbors.\n"); declareOption(ol, "concat_neighbors", &LocalNeighborsDifferencesVMatrix::concat_neighbors, OptionBase::buildoption, "If false, returns the concatenation of nearest neighbors(x) -x from 1 to n_neighbors , else, returns the n_neighbor nearest neighbor(x) - x\n" "(I know, it doesn't make sense. This should be corrected...)"); declareOption(ol, "append_indexes", &LocalNeighborsDifferencesVMatrix::append_indexes, OptionBase::buildoption, "Indication that the indexes of the current data point and of the k nearest neighbors\n" "should be appended to the row of the VMatrix.\n"); declareOption(ol, "append_neighbors", &LocalNeighborsDifferencesVMatrix::append_indexes, OptionBase::buildoption, "Indication that the neighbor vectors of the k nearest neighbors\n" "should be appended to the row of the VMatrix.\n"); // Now call the parent class' declareOptions inherited::declareOptions(ol); }
static const PPath& PLearn::LocalNeighborsDifferencesVMatrix::declaringFile | ( | ) | [inline, static] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 117 of file LocalNeighborsDifferencesVMatrix.h.
{
LocalNeighborsDifferencesVMatrix * PLearn::LocalNeighborsDifferencesVMatrix::deepCopy | ( | CopiesMap & | copies | ) | const [virtual] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 63 of file LocalNeighborsDifferencesVMatrix.cc.
void PLearn::LocalNeighborsDifferencesVMatrix::getNewRow | ( | int | i, |
const Vec & | v | ||
) | const [protected, virtual] |
This is the only method requiring implementation.
Reimplemented from PLearn::SourceVMatrix.
Definition at line 65 of file LocalNeighborsDifferencesVMatrix.cc.
References append_indexes, append_neighbors, concat_neighbors, diff_k, i, ith_row, n_neighbors, neighbor_row, neighbors, PLERROR, PLearn::TVec< T >::resize(), PLearn::SourceVMatrix::source, PLearn::substract(), PLearn::TVec< T >::subVec(), PLearn::TVec< T >::toMat(), PLearn::VMat::width(), and PLearn::VMatrix::width_.
{ if (width_<0) PLERROR("LocalNeighborsDifferencesVMatrix::getNewRow called but build was not done yet"); if (concat_neighbors) { // resize des varaibles //v.resize(source->width()); //we assume that the vector has already the good size neighbor_row.resize(source->width()); ith_row.resize(source->width()); diff_k = v; // recuperation de ce qu'il faut source->getRow(i,ith_row); source->getRow(neighbors(i,n_neighbors-1),neighbor_row); // on renvoie la valeur substract(neighbor_row,ith_row, diff_k); if(append_indexes) { v[source->width()] = i; v[source->width()+1] = neighbors(i,n_neighbors-1); } if(append_neighbors) { v.subVec(source->width()+(append_indexes?2:0),source->width()) << neighbor_row; } } else { // vue en matrice du vecteur de sortie, ca pointe sur les memes donnees. Mat differences = v.toMat(n_neighbors,source->width()); neighbor_row.resize(source->width()); ith_row.resize(source->width()); source->getRow(i,ith_row); for (int k=0;k<n_neighbors;k++) { diff_k = differences(k); source->getRow(neighbors(i,k),neighbor_row); substract(neighbor_row,ith_row, diff_k); // normalize result // now it's done in ProjectionErrorVariable diff_k /= norm(diff_k); if(append_neighbors) { v.subVec(n_neighbors*source->width()+(append_indexes?n_neighbors+1:0)+k*source->width(),source->width()) << neighbor_row; } } if(append_indexes) { v[n_neighbors*source->width()] = i; for(int k=0; k<n_neighbors; k++) v[n_neighbors*source->width()+k+1] = neighbors(i,k); } } }
OptionList & PLearn::LocalNeighborsDifferencesVMatrix::getOptionList | ( | ) | const [virtual] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 63 of file LocalNeighborsDifferencesVMatrix.cc.
OptionMap & PLearn::LocalNeighborsDifferencesVMatrix::getOptionMap | ( | ) | const [virtual] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 63 of file LocalNeighborsDifferencesVMatrix.cc.
RemoteMethodMap & PLearn::LocalNeighborsDifferencesVMatrix::getRemoteMethodMap | ( | ) | const [virtual] |
Reimplemented from PLearn::SourceVMatrix.
Definition at line 63 of file LocalNeighborsDifferencesVMatrix.cc.
void PLearn::LocalNeighborsDifferencesVMatrix::makeDeepCopyFromShallowCopy | ( | CopiesMap & | copies | ) | [virtual] |
Transforms a shallow copy into a deep copy.
Reimplemented from PLearn::SourceVMatrix.
Definition at line 185 of file LocalNeighborsDifferencesVMatrix.cc.
References a_row, PLearn::deepCopyField(), ith_row, PLearn::SourceVMatrix::makeDeepCopyFromShallowCopy(), neighbor_row, and neighbors.
{ inherited::makeDeepCopyFromShallowCopy(copies); deepCopyField(neighbor_row, copies); deepCopyField(ith_row, copies); deepCopyField(a_row, copies); deepCopyField(neighbors, copies); }
Reimplemented from PLearn::SourceVMatrix.
Definition at line 117 of file LocalNeighborsDifferencesVMatrix.h.
Vec PLearn::LocalNeighborsDifferencesVMatrix::a_row [mutable, private] |
Definition at line 60 of file LocalNeighborsDifferencesVMatrix.h.
Referenced by build_(), and makeDeepCopyFromShallowCopy().
Definition at line 81 of file LocalNeighborsDifferencesVMatrix.h.
Referenced by build_(), declareOptions(), getNewRow(), and PLearn::local_neighbors_differences().
Definition at line 82 of file LocalNeighborsDifferencesVMatrix.h.
Referenced by build_(), getNewRow(), and PLearn::local_neighbors_differences().
Definition at line 80 of file LocalNeighborsDifferencesVMatrix.h.
Referenced by build_(), declareOptions(), getNewRow(), and PLearn::local_neighbors_differences().
Vec PLearn::LocalNeighborsDifferencesVMatrix::diff_k [mutable, private] |
Definition at line 60 of file LocalNeighborsDifferencesVMatrix.h.
Referenced by getNewRow().
Vec PLearn::LocalNeighborsDifferencesVMatrix::ith_row [mutable, private] |
Definition at line 60 of file LocalNeighborsDifferencesVMatrix.h.
Referenced by getNewRow(), and makeDeepCopyFromShallowCopy().
Definition at line 79 of file LocalNeighborsDifferencesVMatrix.h.
Referenced by build_(), declareOptions(), getNewRow(), and PLearn::local_neighbors_differences().
Vec PLearn::LocalNeighborsDifferencesVMatrix::neighbor_row [mutable, private] |
Used to store data and save memory allocations.
Definition at line 60 of file LocalNeighborsDifferencesVMatrix.h.
Referenced by getNewRow(), and makeDeepCopyFromShallowCopy().
TMat<int> PLearn::LocalNeighborsDifferencesVMatrix::neighbors [protected] |
Definition at line 65 of file LocalNeighborsDifferencesVMatrix.h.
Referenced by build_(), getNewRow(), and makeDeepCopyFromShallowCopy().