Commit bfe88d64 authored by Davis King's avatar Davis King

Made tests slightly more reasonable.

--HG--
extra : convert_revision : svn%3Afdd8eb12-d10e-0410-9acb-85c331704f74/trunk%403827
parent ecd51c42
...@@ -16,6 +16,7 @@ namespace ...@@ -16,6 +16,7 @@ namespace
using namespace std; using namespace std;
dlib::logger dlog("test.discriminant_pca"); dlib::logger dlog("test.discriminant_pca");
using dlib::equal;
class discriminant_pca_tester : public tester class discriminant_pca_tester : public tester
{ {
...@@ -100,9 +101,9 @@ namespace ...@@ -100,9 +101,9 @@ namespace
DLIB_TEST(dpca2.in_vector_size() == 4); DLIB_TEST(dpca2.in_vector_size() == 4);
DLIB_TEST(dpca2.within_class_weight() == 5); DLIB_TEST(dpca2.within_class_weight() == 5);
DLIB_TEST(dpca2.between_class_weight() == 6); DLIB_TEST(dpca2.between_class_weight() == 6);
DLIB_TEST(equal(dpca.dpca_matrix(), dpca2.dpca_matrix())); DLIB_TEST(equal(dpca.dpca_matrix(), dpca2.dpca_matrix(), 1e-10));
DLIB_TEST(equal(mat, dpca2.dpca_matrix(1))); DLIB_TEST(equal(mat, dpca2.dpca_matrix(1), 1e-10));
DLIB_TEST(equal(dpca.dpca_matrix(1), mat)); DLIB_TEST(equal(dpca.dpca_matrix(1), mat, 1e-10));
// now test swap // now test swap
dpca2.swap(dpca3); dpca2.swap(dpca3);
...@@ -113,7 +114,7 @@ namespace ...@@ -113,7 +114,7 @@ namespace
DLIB_TEST(dpca3.in_vector_size() == 4); DLIB_TEST(dpca3.in_vector_size() == 4);
DLIB_TEST(dpca3.within_class_weight() == 5); DLIB_TEST(dpca3.within_class_weight() == 5);
DLIB_TEST(dpca3.between_class_weight() == 6); DLIB_TEST(dpca3.between_class_weight() == 6);
DLIB_TEST(equal(mat, dpca3.dpca_matrix(1))); DLIB_TEST(equal(mat, dpca3.dpca_matrix(1), 1e-10));
DLIB_TEST((dpca3 + dpca3).in_vector_size() == 4); DLIB_TEST((dpca3 + dpca3).in_vector_size() == 4);
DLIB_TEST((dpca3 + dpca3).within_class_weight() == 5); DLIB_TEST((dpca3 + dpca3).within_class_weight() == 5);
DLIB_TEST((dpca3 + dpca3).between_class_weight() == 6); DLIB_TEST((dpca3 + dpca3).between_class_weight() == 6);
...@@ -240,7 +241,7 @@ namespace ...@@ -240,7 +241,7 @@ namespace
add_dpca3.add_to_between_class_variance(samp1, samp2); add_dpca3.add_to_between_class_variance(samp1, samp2);
} }
matrix<double> mat; matrix<double> mat, mat2;
sum_dpca = dpca_type() + dpca_type() + add_dpca1 + dpca_type() + add_dpca2 + add_dpca3 + add_dpca4; sum_dpca = dpca_type() + dpca_type() + add_dpca1 + dpca_type() + add_dpca2 + add_dpca3 + add_dpca4;
dpca.set_within_class_weight(0); dpca.set_within_class_weight(0);
...@@ -248,7 +249,7 @@ namespace ...@@ -248,7 +249,7 @@ namespace
sum_dpca.set_within_class_weight(0); sum_dpca.set_within_class_weight(0);
sum_dpca.set_between_class_weight(0); sum_dpca.set_between_class_weight(0);
mat = dpca.dpca_matrix(1); mat = dpca.dpca_matrix(1);
DLIB_TEST(equal(mat, sum_dpca.dpca_matrix(1))); DLIB_TEST(equal(mat, sum_dpca.dpca_matrix(1), 1e-10));
DLIB_TEST(equal(mat*trans(mat), identity_matrix<double>(4))); DLIB_TEST(equal(mat*trans(mat), identity_matrix<double>(4)));
DLIB_TEST(dpca.dpca_matrix(1).nr() == 4); DLIB_TEST(dpca.dpca_matrix(1).nr() == 4);
dpca.set_within_class_weight(10000); dpca.set_within_class_weight(10000);
...@@ -262,7 +263,7 @@ namespace ...@@ -262,7 +263,7 @@ namespace
mat = dpca.dpca_matrix(1); mat = dpca.dpca_matrix(1);
DLIB_TEST(equal(mat*trans(mat), identity_matrix<double>(2))); DLIB_TEST(equal(mat*trans(mat), identity_matrix<double>(2)));
DLIB_TEST(equal(mat, sum_dpca.dpca_matrix(1))); DLIB_TEST_MSG(equal(mat, mat2=sum_dpca.dpca_matrix(1), 1e-9), max(abs(mat - mat2)));
// now add the variance back in using the between class weight // now add the variance back in using the between class weight
......
...@@ -579,19 +579,20 @@ namespace ...@@ -579,19 +579,20 @@ namespace
svd2(true,true,a2+a2,u,q,v); svd2(true,true,a2+a2,u,q,v);
double err = sum(round(1e10*(a - subm(u,get_rect(a2+a2))*diagm(q)*trans(v)))); double err = max(abs(a - subm(u,get_rect(a2+a2))*diagm(q)*trans(v)));
DLIB_TEST_MSG( err == 0,"err: " << err); DLIB_TEST_MSG( err < 1e-11,"err: " << err);
DLIB_TEST((round(1e10*trans(u)*u) == 1e10*identity_matrix<double,M>())); using dlib::equal;
DLIB_TEST((round(1e10*trans(v)*v) == 1e10*identity_matrix<double,N>())); DLIB_TEST((equal(trans(u)*u , identity_matrix<double,M>(), 1e-10)));
DLIB_TEST((equal(trans(v)*v , identity_matrix<double,N>(), 1e-10)));
svd2(false,true,a2+a2,u,q,v2);
svd2(true,false,a2+a2,u2,q,v);
svd2(false,false,a2+a2,u,q2,v);
svd2(false,true,a2+a2,u2,q2,v2); err = max(abs(a - subm(u2,get_rect(a2+a2))*diagm(q2)*trans(v2)));
DLIB_TEST(equal(q2,q)); DLIB_TEST_MSG( err < 1e-11,"err: " << err);
DLIB_TEST(equal(v2,v)); DLIB_TEST((equal(trans(u2)*u2 , identity_matrix<double,M>(), 1e-10)));
svd2(true,false,a2+a2,u2,q2,v2); DLIB_TEST((equal(trans(v2)*v2 , identity_matrix<double,N>(), 1e-10)));
DLIB_TEST(equal(q2,q));
DLIB_TEST(equal(u2,u));
svd2(false,false,a2+a2,u2,q2,v2);
DLIB_TEST(equal(q2,q));
} }
...@@ -620,19 +621,20 @@ namespace ...@@ -620,19 +621,20 @@ namespace
svd2(true,true,a2+a2,u,q,v); svd2(true,true,a2+a2,u,q,v);
double err = sum(round(1e10*(a - subm(u,get_rect(a2+a2))*diagm(q)*trans(v)))); double err = max(abs(a - subm(u,get_rect(a2+a2))*diagm(q)*trans(v)));
DLIB_TEST_MSG( err == 0,"err: " << err); DLIB_TEST_MSG( err < 1e-11,"err: " << err);
DLIB_TEST((round(1e10*trans(u)*u) == 1e10*identity_matrix<double,M>())); using dlib::equal;
DLIB_TEST((round(1e10*trans(v)*v) == 1e10*identity_matrix<double,N>())); DLIB_TEST((equal(trans(u)*u , identity_matrix<double,M>(), 1e-10)));
DLIB_TEST((equal(trans(v)*v , identity_matrix<double,N>(), 1e-10)));
svd2(false,true,a2+a2,u,q,v2);
svd2(true,false,a2+a2,u2,q,v);
svd2(false,false,a2+a2,u,q2,v);
svd2(false,true,a2+a2,u2,q2,v2); err = max(abs(a - subm(u2,get_rect(a2+a2))*diagm(q2)*trans(v2)));
DLIB_TEST(equal(q2,q)); DLIB_TEST_MSG( err < 1e-11,"err: " << err);
DLIB_TEST(equal(v2,v)); DLIB_TEST((equal(trans(u2)*u2 , identity_matrix<double,M>(), 1e-10)));
svd2(true,false,a2+a2,u2,q2,v2); DLIB_TEST((equal(trans(v2)*v2 , identity_matrix<double,N>(), 1e-10)));
DLIB_TEST(equal(q2,q));
DLIB_TEST(equal(u2,u));
svd2(false,false,a2+a2,u2,q2,v2);
DLIB_TEST(equal(q2,q));
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment