From feaa56e4495f2200cc6e5eecf4e5a40f082cd39a Mon Sep 17 00:00:00 2001 From: Dongryeol Lee Date: Wed, 6 Feb 2008 20:28:37 +0000 Subject: [PATCH] Middle of debugging --- .../dongryel/regression/local_linear_krylov.h | 40 ++++++++++--------- .../regression/local_linear_krylov_main.cc | 17 +++----- 2 files changed, 28 insertions(+), 29 deletions(-) diff --git a/fastlib2/contrib/dongryel/regression/local_linear_krylov.h b/fastlib2/contrib/dongryel/regression/local_linear_krylov.h index b70ecfc55b..99edb4291d 100644 --- a/fastlib2/contrib/dongryel/regression/local_linear_krylov.h +++ b/fastlib2/contrib/dongryel/regression/local_linear_krylov.h @@ -592,6 +592,10 @@ class LocalLinearKrylov { printf("Starting Phase 1...\n"); ComputeRightHandSides_(); printf("Phase 1 completed...\n"); + vector_e_.PrintDebug(); + + exit(0); + // The second phase solves the least squares problem: (B^T W(q) B) // z(q) = B^T W(q) Y for each query point q. @@ -621,7 +625,7 @@ class LocalLinearKrylov { } void Init(Matrix &queries, Matrix &references, Matrix &reference_targets, - bool queries_equal_references, struct datanode *module_in) { + struct datanode *module_in) { // point to the incoming module module_ = module_in; @@ -638,30 +642,30 @@ class LocalLinearKrylov { // components required for local linear (which is D + 1). dimension_ = rset_.n_rows(); row_length_ = dimension_ + 1; - - printf("row_length_ = %d %d\n", row_length_, rset_.n_cols()); // copy query dataset. - if(queries_equal_references) { - qset_.Alias(rset_); - } - else { - qset_.Copy(queries); - } + qset_.Copy(queries); - // construct query and reference trees + // Start measuring the tree construction time. fx_timer_start(NULL, "tree_d"); + + // Construct the reference tree. rroot_ = tree::MakeKdTreeMidpoint(rset_, leaflen, &old_from_new_references_, NULL); - - if(queries_equal_references) { - qroot_ = rroot_; - old_from_new_queries_.Copy(old_from_new_references_); - } - else { - qroot_ = tree::MakeKdTreeMidpoint(qset_, leaflen, - &old_from_new_queries_, NULL); + + // We need to shuffle the reference training target values + // according to the shuffled order of the reference dataset. + Vector tmp_rset_targets; + tmp_rset_targets.Init(rset_targets_.length()); + for(index_t j = 0; j < rset_targets_.length(); j++) { + tmp_rset_targets[j] = rset_targets_[old_from_new_references_[j]]; } + rset_targets_.CopyValues(tmp_rset_targets); + + // Construct the query tree. + qroot_ = tree::MakeKdTreeMidpoint(qset_, leaflen, + &old_from_new_queries_, NULL); + fx_timer_stop(NULL, "tree_d"); // initialize the kernel. diff --git a/fastlib2/contrib/dongryel/regression/local_linear_krylov_main.cc b/fastlib2/contrib/dongryel/regression/local_linear_krylov_main.cc index 150cca105e..9092d3c2e3 100644 --- a/fastlib2/contrib/dongryel/regression/local_linear_krylov_main.cc +++ b/fastlib2/contrib/dongryel/regression/local_linear_krylov_main.cc @@ -1,5 +1,6 @@ #include "fastlib/fastlib.h" #include "local_linear_krylov.h" +#include "mlpack/kde/dataset_scaler.h" int main(int argc, char *argv[]) { @@ -34,24 +35,18 @@ int main(int argc, char *argv[]) { Matrix reference_targets; Matrix queries; - // flag for telling whether references are equal to queries - bool queries_equal_references = - !strcmp(queries_file_name, references_file_name); - // data::Load inits a matrix with the contents of a .csv or .arff. data::Load(references_file_name, &references); - if(queries_equal_references) { - queries.Alias(references); - } - else { - data::Load(queries_file_name, &queries); - } + data::Load(queries_file_name, &queries); data::Load(reference_targets_file_name, &reference_targets); + // Scale the datasets. + DatasetScaler::ScaleDataByMinMax(queries, references, false); + // Declare local linear krylov object. LocalLinearKrylov local_linear; local_linear.Init(queries, references, reference_targets, - queries_equal_references, local_linear_module); + local_linear_module); local_linear.Compute(); local_linear.PrintDebug();