Made the krr_trainer print the EKM projection error when in verbose mode.

--HG--
extra : convert_revision : svn%3Afdd8eb12-d10e-0410-9acb-85c331704f74/trunk%403796
This commit is contained in:
Davis King 2010-07-28 23:24:23 +00:00
parent fb46e2fb4e
commit 2bdd9bf2c7
1 changed files with 20 additions and 2 deletions

View File

@ -8,6 +8,7 @@
#include "kernel.h"
#include "empirical_kernel_map.h"
#include "linearly_independent_subset_finder.h"
#include "../statistics.h"
#include "krr_trainer_abstract.h"
#include <vector>
#include <iostream>
@ -276,21 +277,38 @@ namespace dlib
if (verbose)
{
std::cout << "Number of basis vectors used: " << ekm.out_vector_size() << std::endl;
std::cout << "\nNumber of basis vectors used: " << ekm.out_vector_size() << std::endl;
}
typedef matrix<scalar_type,0,1,mem_manager_type> column_matrix_type;
typedef matrix<scalar_type,0,0,mem_manager_type> general_matrix_type;
running_stats<scalar_type> rs;
// Now we project all the x samples into kernel space using our EKM
matrix<column_matrix_type,0,1,mem_manager_type > proj_x;
proj_x.set_size(x.size());
for (long i = 0; i < proj_x.size(); ++i)
{
scalar_type err;
// Note that we also append a 1 to the end of the vectors because this is
// a convenient way of dealing with the bias term later on.
if (verbose == false)
{
proj_x(i) = join_cols(ekm.project(x(i)), ones_matrix<scalar_type>(1,1));
}
else
{
proj_x(i) = join_cols(ekm.project(x(i),err), ones_matrix<scalar_type>(1,1));
rs.add(err);
}
}
if (verbose)
{
std::cout << "Mean EKM projection error: " << rs.mean() << std::endl;
std::cout << "Standard deviation of EKM projection error: " << rs.stddev() << std::endl;
}
/*
Notes on the solution of KRR